<SEC-DOCUMENT>0001437749-21-018375.txt : 20210803
<SEC-HEADER>0001437749-21-018375.hdr.sgml : 20210803
<ACCEPTANCE-DATETIME>20210803170217
ACCESSION NUMBER:		0001437749-21-018375
CONFORMED SUBMISSION TYPE:	10-Q
PUBLIC DOCUMENT COUNT:		68
CONFORMED PERIOD OF REPORT:	20210630
FILED AS OF DATE:		20210803
DATE AS OF CHANGE:		20210803

FILER:

	COMPANY DATA:	
		COMPANY CONFORMED NAME:			Proto Labs Inc
		CENTRAL INDEX KEY:			0001443669
		STANDARD INDUSTRIAL CLASSIFICATION:	FABRICATED STRUCTURAL METAL PRODUCTS [3440]
		IRS NUMBER:				000000000
		FISCAL YEAR END:			1231

	FILING VALUES:
		FORM TYPE:		10-Q
		SEC ACT:		1934 Act
		SEC FILE NUMBER:	001-35435
		FILM NUMBER:		211140787

	BUSINESS ADDRESS:	
		STREET 1:		5540 Pioneer Creek
		CITY:			Maple Plain
		STATE:			MN
		ZIP:			55359
		BUSINESS PHONE:		763-479-7474

	MAIL ADDRESS:	
		STREET 1:		5540 Pioneer Creek
		CITY:			Maple Plain
		STATE:			MN
		ZIP:			55359
</SEC-HEADER>
<DOCUMENT>
<TYPE>10-Q
<SEQUENCE>1
<FILENAME>prlb20210630_10q.htm
<DESCRIPTION>FORM 10-Q
<TEXT>
<XBRL>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ref="http://www.xbrl.org/2006/ref" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:naics="http://xbrl.sec.gov/naics/2021" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ixt-sec="http://www.sec.gov/inlineXBRL/transformation/2015-08-31" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ixt="http://www.xbrl.org/inlineXBRL/transformation/2015-02-26" xmlns:us-types="http://fasb.org/us-types/2017-01-31" xmlns:srt-types="http://fasb.org/srt-types/2017-01-31" xmlns:utreg="http://www.xbrl.org/2009/utr" xmlns:ix="http://www.xbrl.org/2013/inlineXBRL" xmlns:us-roles="http://fasb.org/us-roles/2017-01-31" xmlns:stpr="http://xbrl.sec.gov/stpr/2021" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:thunderdome="http://www.RDGFilings.com" xmlns:utr="http://www.xbrl.org/2009/utr" xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xmlns:dei="http://xbrl.sec.gov/dei/2021" xmlns:prlb="http://www.protolabs.com/20210630" xmlns:currency="http://xbrl.sec.gov/currency/2021" xmlns:sic="http://xbrl.sec.gov/sic/2021" xmlns:exch="http://xbrl.sec.gov/exch/2021" xmlns:rr="http://xbrl.sec.gov/rr/2018-01-31" xmlns:country="http://xbrl.sec.gov/country/2021" xmlns:us-gaap="http://fasb.org/us-gaap/2021-01-31" xmlns:srt="http://fasb.org/srt/2021-01-31" xmlns:dtr-types="http://www.xbrl.org/dtr/type/2020-01-21">
 <head>
  <title>prlb20210630_10q.htm</title>
  <!-- Generated by ThunderDome Portal - 8/2/2021 4:56:56 PM -->
  <meta http-equiv="Content-Type" content="text/html" /></head>
 <body style="padding: 0in 0.1in; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; cursor: auto;"><div style="display: none;"><ix:header><ix:hidden>
<ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="dei:EntityCentralIndexKey" id="thunderdome-EntityCentralIndexKey">0001443669</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="dei:EntityRegistrantName" id="thunderdome-EntityRegistrantName">Proto Labs Inc</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="dei:AmendmentFlag" format="ixt:booleanfalse">false</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="dei:CurrentFiscalYearEndDate">--12-31</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="dei:DocumentFiscalPeriodFocus">Q2</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="dei:DocumentFiscalYearFocus">2021</ix:nonNumeric>
<ix:nonFraction id="c75343084" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent" scale="0" format="ixt:numdotdecimal" decimals="INF">1,997</ix:nonFraction>
<ix:nonFraction id="c75343085" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent" scale="0" format="ixt:numdotdecimal" decimals="INF">1,781</ix:nonFraction>
<ix:nonFraction id="c75343144" contextRef="i_2021-06-30" unitRef="USDPerShare" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0" format="ixt:numdotdecimal" decimals="INF">0.001</ix:nonFraction>
<ix:nonFraction id="c75343145" contextRef="i_2020-12-31" unitRef="USDPerShare" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0" format="ixt:numdotdecimal" decimals="INF">0.001</ix:nonFraction>
<ix:nonFraction id="c75343146" contextRef="i_2021-06-30" unitRef="Share" name="us-gaap:PreferredStockSharesAuthorized" scale="0" format="ixt:numdotdecimal" decimals="INF">10,000,000</ix:nonFraction>
<ix:nonFraction id="c75343147" contextRef="i_2020-12-31" unitRef="Share" name="us-gaap:PreferredStockSharesAuthorized" scale="0" format="ixt:numdotdecimal" decimals="INF">10,000,000</ix:nonFraction>
<ix:nonFraction id="c75343148" contextRef="i_2021-06-30" unitRef="Share" name="us-gaap:PreferredStockSharesIssued" scale="0" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c75343149" contextRef="i_2020-12-31" unitRef="Share" name="us-gaap:PreferredStockSharesIssued" scale="0" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c75343150" contextRef="i_2021-06-30" unitRef="Share" name="us-gaap:PreferredStockSharesIssued" scale="0" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c75343151" contextRef="i_2020-12-31" unitRef="Share" name="us-gaap:PreferredStockSharesIssued" scale="0" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction>
<ix:nonFraction id="c75343154" contextRef="i_2021-06-30" unitRef="USDPerShare" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" format="ixt:numdotdecimal" decimals="INF">0.001</ix:nonFraction>
<ix:nonFraction id="c75343155" contextRef="i_2020-12-31" unitRef="USDPerShare" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" format="ixt:numdotdecimal" decimals="INF">0.001</ix:nonFraction>
<ix:nonFraction id="c75343156" contextRef="i_2021-06-30" unitRef="Share" name="us-gaap:CommonStockSharesAuthorized" scale="0" format="ixt:numdotdecimal" decimals="INF">150,000,000</ix:nonFraction>
<ix:nonFraction id="c75343157" contextRef="i_2020-12-31" unitRef="Share" name="us-gaap:CommonStockSharesAuthorized" scale="0" format="ixt:numdotdecimal" decimals="INF">150,000,000</ix:nonFraction>
<ix:nonFraction id="c75343158" contextRef="i_2021-06-30" unitRef="Share" name="us-gaap:CommonStockSharesIssued" scale="0" format="ixt:numdotdecimal" decimals="INF">27,761,063</ix:nonFraction>
<ix:nonFraction id="c75343160" contextRef="i_2021-06-30" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">27,761,063</ix:nonFraction>
<ix:nonFraction id="c75343159" contextRef="i_2020-12-31" unitRef="Share" name="us-gaap:CommonStockSharesIssued" scale="0" format="ixt:numdotdecimal" decimals="INF">26,776,796</ix:nonFraction>
<ix:nonFraction id="c75343161" contextRef="i_2020-12-31" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">26,776,796</ix:nonFraction>
<ix:nonFraction id="c75343673" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_StatementGeographicalAxis-EuropeMember" unitRef="EUR" name="us-gaap:GoodwillAcquiredDuringPeriod" scale="6" format="ixt:numdotdecimal" decimals="-5">106.5</ix:nonFraction>
<ix:nonFraction id="c75343677" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_StatementGeographicalAxis-EuropeMember" unitRef="EUR" name="us-gaap:FinitelivedIntangibleAssetsAcquired1" scale="6" format="ixt:numdotdecimal" decimals="-5">11.6</ix:nonFraction>
<ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_PlanNameAxis-LongtermIncentivePlan2012Member" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod" id="c75343967" format="ixt-sec:duryear">10</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-ESPPMember" name="prlb:EmployeeStockPurchasePlanOfferingPeriod" id="c75343972" format="ixt-sec:durmonth">6</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod" id="c75343986" format="ixt-sec:duryear">10</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c75343987" format="ixt-sec:duryear">4</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c75343988" format="ixt-sec:duryear">5</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember_RangeAxis-MinimumMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c75343998" format="ixt-sec:duryear">3</ix:nonNumeric>
<ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember_RangeAxis-MaximumMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c75343999" format="ixt-sec:duryear">5</ix:nonNumeric>
<ix:nonFraction id="c75344006" contextRef="i_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" scale="-2" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction>
<ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="c75344008" format="ixt-sec:duryear">3</ix:nonNumeric></ix:hidden>
<ix:references>
<link:schemaRef xlink:href="prlb-20210630.xsd" xlink:type="simple"></link:schemaRef></ix:references>
<ix:resources>
<xbrli:context id="d_2021-01-01_2021-06-30"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="Share"><xbrli:measure>xbrli:shares</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2021-07-29"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2021-07-29</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="USD"><xbrli:measure>iso4217:USD</xbrli:measure></xbrli:unit>
<xbrli:context id="i_2021-06-30"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="USDPerShare"><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>
<xbrli:context id="d_2021-04-01_2021-06-30"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-03-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-03-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-03-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-03-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-03-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-03-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-03-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-03-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-03-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-03-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-03-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-03-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2021-03-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2019-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-03-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-03-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-03-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-03-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-03-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-03-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-03-31_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-03-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-03-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-03-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-03-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-03-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2020-03-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-06-30_StatementEquityComponentsAxis-CommonStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-06-30"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2020-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-22</xbrli:startDate><xbrli:endDate>2021-01-22</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-01-22</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:StatementScenarioAxis">srt:ScenarioForecastMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-22</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="EUR"><xbrli:measure>iso4217:EUR</xbrli:measure></xbrli:unit>
<xbrli:context id="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_StatementGeographicalAxis-EuropeMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-22</xbrli:startDate><xbrli:endDate>2021-01-22</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_StatementGeographicalAxis-US"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-22</xbrli:startDate><xbrli:endDate>2021-01-22</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:MarketingRelatedIntangibleAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:MarketingRelatedIntangibleAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:unit id="Year"><xbrli:measure>utr:Y</xbrli:measure></xbrli:unit>
<xbrli:context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:MarketingRelatedIntangibleAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">prlb:SoftwarePlatformMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">prlb:SoftwarePlatformMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">prlb:SoftwarePlatformMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-12-31"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByAssetClassAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByAssetClassAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByAssetClassAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByAssetClassAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByAssetClassAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByAssetClassAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USStatesAndPoliticalSubdivisionsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_CashAndCashEquivalentsAxis-BankTimeDepositsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:BankTimeDepositsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USStatesAndPoliticalSubdivisionsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:BankTimeDepositsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperNotIncludedWithCashAndCashEquivalentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_PlanNameAxis-LongtermIncentivePlan2012Member"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">prlb:LongtermIncentivePlan2012Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="Pure"><xbrli:measure>xbrli:pure</xbrli:measure></xbrli:unit>
<xbrli:context id="d_2021-01-01_2021-06-30_AwardTypeAxis-ESPPMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:ESPPMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:unit id="Month"><xbrli:measure>utr:M</xbrli:measure></xbrli:unit>
<xbrli:context id="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_AwardTypeAxis-RestrictedStockMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_AwardTypeAxis-PerformanceSharesMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">prlb:EmployeeStockPurchasePlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">prlb:EmployeeStockPurchasePlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MinimumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">prlb:EmployeeStockPurchasePlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MaximumMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">prlb:EmployeeStockPurchasePlanMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">prlb:EmployeeStockPurchasePlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">prlb:EmployeeStockPurchasePlanMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-06-30</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:InjectionMoldingProtomoldMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:InjectionMoldingProtomoldMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:InjectionMoldingProtomoldMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:InjectionMoldingProtomoldMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:CNCMachiningFirstcutMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:CNCMachiningFirstcutMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:CNCMachiningFirstcutMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:CNCMachiningFirstcutMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:ThreeDPrintingFinelineMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:ThreeDPrintingFinelineMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:ThreeDPrintingFinelineMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:ThreeDPrintingFinelineMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_ProductOrServiceAxis-SheetMetalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:SheetMetalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_ProductOrServiceAxis-SheetMetalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:SheetMetalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_ProductOrServiceAxis-SheetMetalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:SheetMetalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_ProductOrServiceAxis-SheetMetalMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:SheetMetalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-04-01_2021-06-30_ProductOrServiceAxis-OtherProductsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:OtherProductsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-04-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-04-01_2020-06-30_ProductOrServiceAxis-OtherProductsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:OtherProductsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-04-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2021-01-01_2021-06-30_ProductOrServiceAxis-OtherProductsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:OtherProductsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-06-30</xbrli:endDate></xbrli:period></xbrli:context>
<xbrli:context id="d_2020-01-01_2020-06-30_ProductOrServiceAxis-OtherProductsMember"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0001443669</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:OtherProductsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-06-30</xbrli:endDate></xbrli:period></xbrli:context></ix:resources>
</ix:header></div>
  <div>
    &#xa0;
  </div>
  <div><p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#toc" style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">Table of Contents</a></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 18pt;"><b>UNITED STATES</b></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 18pt;"><b>SECURITIES AND EXCHANGE COMMISSION</b></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Washington, D.C. 20549</b></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<hr style="margin: 0px auto; border: currentColor; border-image: none; width: 10%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
<p style="margin: 0; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 18pt;"><b>FORM <ix:nonNumeric name="dei:DocumentType" contextRef="d_2021-01-01_2021-06-30">10-Q</ix:nonNumeric></b></p>
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><tbody><tr><td style="width: 3.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td><td style="width: 96.7%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(Mark One)</p> </td></tr>
</tbody></table>
<p style="margin: 0pt 37.2pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><tbody><tr><td style="width: 3.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><ix:nonNumeric name="dei:DocumentQuarterlyReport" format="ixt-sec:boolballotbox" contextRef="d_2021-01-01_2021-06-30">&#x2611;</ix:nonNumeric></p> </td><td style="width: 96.7%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>QUARTERLY REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934</b></p> </td></tr>
<tr><td style="width: 3.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td><td style="width: 96.7%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>For the</b><b> quarterly period ended&#xa0;<ix:nonNumeric name="dei:DocumentPeriodEndDate" format="ixt:datemonthdayyearen" contextRef="d_2021-01-01_2021-06-30">June 30, 2021</ix:nonNumeric></b></p> </td></tr>
</tbody></table>
<p style="margin: 0pt 59.7pt 0pt 100.2pt; text-align: left; text-indent: 22.8pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 59.7pt 0pt 100.2pt; text-align: left; text-indent: 22.8pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>or</b></p>
<p style="margin: 0pt 59.7pt 0pt 100.2pt; text-align: left; text-indent: 22.8pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><tbody><tr><td style="width: 3.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><ix:nonNumeric name="dei:DocumentTransitionReport" format="ixt-sec:boolballotbox" contextRef="d_2021-01-01_2021-06-30">&#x2610;</ix:nonNumeric></p> </td><td style="width: 96.7%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>TRANSITION REPORT PURSUANT TO SECTION 13 OR 15(d) OF THE SECURITIES EXCHANGE ACT OF 1934</b></p> </td></tr>
<tr><td style="width: 3.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td><td style="width: 96.7%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>For the transition period from</b><span style="text-decoration: underline; "><b>&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;</b></span><b> to</b><span style="text-decoration: underline; "><b>&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;&#xa0;</b></span><b>&#xa0;</b></p> </td></tr>
</tbody></table>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Commission File Number: <ix:nonNumeric name="dei:EntityFileNumber" contextRef="d_2021-01-01_2021-06-30">001-35435</ix:nonNumeric></b></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 18pt;"><b>Proto Labs, Inc.</b></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(Exact name of registrant as specified in its charter)</p>
<p style="margin: 0pt 59.7pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><tbody><tr><td style="width: 50%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><ix:nonNumeric name="dei:EntityIncorporationStateCountryCode" format="ixt-sec:stateprovnameen" contextRef="d_2021-01-01_2021-06-30">Minnesota</ix:nonNumeric></b></p> </td><td style="width: 50%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><ix:nonNumeric name="dei:EntityTaxIdentificationNumber" contextRef="d_2021-01-01_2021-06-30">41-1939628</ix:nonNumeric></b></p> </td></tr>
<tr><td style="width: 50%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(State or other jurisdiction of incorporation or organization)</p> </td><td style="width: 50%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(I.R.S. Employer Identification No.)</p> </td></tr>
<tr><td style="width: 50%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td><td style="width: 50%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td></tr>
<tr><td style="width: 50%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><ix:nonNumeric name="dei:EntityAddressAddressLine1" contextRef="d_2021-01-01_2021-06-30">5540 Pioneer Creek Drive</ix:nonNumeric></b></p> </td><td style="width: 50%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td></tr>
<tr><td style="width: 50%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><ix:nonNumeric name="dei:EntityAddressCityOrTown" contextRef="d_2021-01-01_2021-06-30">Maple Plain</ix:nonNumeric>, <ix:nonNumeric name="dei:EntityAddressStateOrProvince" format="ixt-sec:stateprovnameen" contextRef="d_2021-01-01_2021-06-30">Minnesota</ix:nonNumeric></b></p> </td><td style="width: 50%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><ix:nonNumeric name="dei:EntityAddressPostalZipCode" contextRef="d_2021-01-01_2021-06-30">55359</ix:nonNumeric></b></p> </td></tr>
<tr><td style="width: 50%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(Address of principal executive offices)</p> </td><td style="width: 50%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(Zip Code)</p> </td></tr>
</tbody></table>
<p style="margin: 0pt 59.7pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(<ix:nonNumeric name="dei:CityAreaCode" contextRef="d_2021-01-01_2021-06-30">763</ix:nonNumeric>)&#xa0;<ix:nonNumeric name="dei:LocalPhoneNumber" contextRef="d_2021-01-01_2021-06-30">479-3680</ix:nonNumeric></b></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(Registrant&#x2019;s telephone number, including area code)</p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Not Applicable</b></p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(Former name, former address and former fiscal year, if changed since last report)</p>
<p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;&#xa0;</p>
<p style="margin: 0pt 7.2pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Securities registered pursuant to Section 12(b) of the Act:</p>
<p style="margin: 0pt 7.2pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><tbody><tr><td style="border-width: thin thin 1px; border-style: solid; border-color: rgb(0, 0, 0); width: 35%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Title of each class</p> </td><td style="width: 30%; vertical-align: top; border-top-color: rgb(0, 0, 0); border-bottom-color: rgb(0, 0, 0); border-top-width: thin; border-bottom-width: 1px; border-top-style: solid; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Trading Symbol(s)</p> </td><td style="border-width: thin thin 1px; border-style: solid; border-color: rgb(0, 0, 0); width: 35%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Name of each exchange on which registered</p> </td></tr>
<tr><td style="width: 35%; text-align: center; vertical-align: top; border-right-color: rgb(0, 0, 0); border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-width: thin; border-bottom-width: 1px; border-left-width: thin; border-right-style: solid; border-bottom-style: solid; border-left-style: solid;"><ix:nonNumeric name="dei:Security12bTitle" contextRef="d_2021-01-01_2021-06-30">Common Stock, Par Value $0.001 Per Share</ix:nonNumeric></td><td style="width: 30%; vertical-align: top; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><ix:nonNumeric name="dei:TradingSymbol" contextRef="d_2021-01-01_2021-06-30">PRLB</ix:nonNumeric></p> </td><td style="width: 35%; vertical-align: top; border-right-color: rgb(0, 0, 0); border-bottom-color: rgb(0, 0, 0); border-left-color: rgb(0, 0, 0); border-right-width: thin; border-bottom-width: 1px; border-left-width: thin; border-right-style: solid; border-bottom-style: solid; border-left-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><ix:nonNumeric name="dei:SecurityExchangeName" format="ixt-sec:exchnameen" contextRef="d_2021-01-01_2021-06-30">New York Stock Exchange</ix:nonNumeric></p> </td></tr>
</tbody></table>
<p style="margin: 0pt 7.2pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Indicate by check mark whether the registrant (1)&#xa0;has filed all reports required to be filed by Section&#xa0;13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12&#xa0;months (or for such shorter period that the registrant was required to file such reports), and (2)&#xa0;has been subject to such filing requirements for the past 90&#xa0;days.&#xa0;&#xa0;&#x2611;<ix:nonNumeric name="dei:EntityCurrentReportingStatus" contextRef="d_2021-01-01_2021-06-30">Yes</ix:nonNumeric> &#x2610;No</p>
<p style="margin: 0pt 59.7pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Indicate by check mark whether 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).&#xa0;&#xa0;&#x2611;<ix:nonNumeric name="dei:EntityInteractiveDataCurrent" contextRef="d_2021-01-01_2021-06-30">Yes</ix:nonNumeric> &#x2610;No</p>
<p style="margin: 0pt 59.7pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Indicate by check mark whether the registrant is a large accelerated filer, an accelerated filer, a non-accelerated filer, a smaller reporting company, or an emerging growth company. See the definitions of "large accelerated filer,"&#xa0;&#x9d;"accelerated filer,"&#x9d; "smaller reporting company,"&#x9d; and "emerging growth company"&#x9d; in Rule 12b-2 of the Exchange Act.</p>
<p style="margin: 0pt 59.7pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><tbody><tr><td style="width: 20%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><ix:nonNumeric name="dei:EntityFilerCategory" format="ixt-sec:entityfilercategoryen" contextRef="d_2021-01-01_2021-06-30">Large accelerated filer</ix:nonNumeric></p> </td><td style="width: 40%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#x2611;</p> </td><td style="width: 20%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Accelerated filer &#xa0;&#xa0;&#xa0;&#xa0;</p> </td><td style="width: 20%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#x2610;</p> </td></tr>
<tr><td style="width: 20%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Non-accelerated filer</p> </td><td colspan="2" style="width: 60%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#x2610;&#xa0;&#xa0;&#xa0;&#xa0;</p> </td><td style="width: 20%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td></tr>
<tr><td style="width: 20%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Smaller reporting company</p> </td><td style="width: 40%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><ix:nonNumeric name="dei:EntitySmallBusiness" format="ixt-sec:boolballotbox" contextRef="d_2021-01-01_2021-06-30">&#x2610;</ix:nonNumeric></p> </td><td style="width: 20%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Emerging growth company</p> </td><td style="width: 20%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><ix:nonNumeric name="dei:EntityEmergingGrowthCompany" format="ixt-sec:boolballotbox" contextRef="d_2021-01-01_2021-06-30">&#x2610;</ix:nonNumeric></p> </td></tr>
</tbody></table>
<p style="margin: 0pt 59.7pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;&#xa0;&#xa0;&#xa0;</p>
<p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">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. &#x2610;</p>
<p style="margin: 0pt 59.2pt; text-align: left; text-indent: 18pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Indicate by check mark whether the registrant is a shell company (as defined in Rule&#xa0;12b-2 of the Exchange Act). <ix:nonNumeric name="dei:EntityShellCompany" format="ixt-sec:boolballotbox" contextRef="d_2021-01-01_2021-06-30">&#x2610;</ix:nonNumeric>Yes &#x2611;No</p>
<p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Indicate the number of shares outstanding of each of the issuer&#x2019;s classes of common stock, as of the latest practicable date: <ix:nonFraction name="dei:EntityCommonStockSharesOutstanding" scale="0" unitRef="Share" decimals="INF" format="ixt:numdotdecimal" contextRef="i_2021-07-29">27,761,063</ix:nonFraction> shares of Common Stock, par value $0.001 per share, were outstanding at July 29, 2021.</p>
<p style="margin: 0pt 7.2pt; text-align: left; text-indent: 27pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
<div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
 <div class="PGNUM" style="width: 100%; text-align: center;">
  &#xa0;
 </div>
 <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
 <div class="PGHDR" style="width: 100%; text-align: left;">
  <div class="hf-row">
   <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
  </div>
 </div>
</div>
<p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p></div>
  <div>
    &#xa0;
  </div>
  <div>
   <p style="margin: 0pt 59.7pt; text-align: center; text-indent: -15pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="toc" title="toc" href="#"></a>Proto Labs, Inc.</b></p>
   <p style="margin: 0pt 59.7pt; text-align: center; text-indent: -15pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>TABLE OF CONTENTS</b></p>
   <p style="margin: 0pt 59.7pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
    <tbody>
     <tr>
      <td style="width: 9.3%; vertical-align: top; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Item</b></p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 77.1%; vertical-align: top; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Description</b></p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 9.4%; vertical-align: top; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Page</b></p> </td>
     </tr>

     <tr>
      <td style="width: 9.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 77.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 9.4%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     </tr>

     <tr>
      <td colspan="5" style="width: 100%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#p1i1" style="-sec-extract: exhibit;">PART I</a></p> </td>
     </tr>

     <tr>
      <td style="width: 9.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">1.</p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 77.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#p1i1" style="-sec-extract: exhibit;">Financial Statements</a></p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 9.4%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#p1i1">2</a></p> </td>
     </tr>

     <tr>
      <td style="width: 9.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">2.</p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 77.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#i2" style="-sec-extract: exhibit;">Management's Discussion and Analysis of Financial Condition and Results of Operations</a></p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 9.4%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#i2">16</a></p> </td>
     </tr>

     <tr>
      <td style="width: 9.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">3.</p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 77.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#i3" style="-sec-extract: exhibit;">Quantitative and Qualitative Disclosures about Market Risk</a></p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 9.4%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#i3">26</a></p> </td>
     </tr>

     <tr>
      <td style="width: 9.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">4.</p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 77.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#i4" style="-sec-extract: exhibit;">Controls and Procedures</a></p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 9.4%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#i4">27</a></p> </td>
     </tr>

     <tr>
      <td colspan="5" style="width: 100%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#p2" style="-sec-extract: exhibit;">PART II</a></p> </td>
     </tr>

     <tr>
      <td style="width: 9.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">1.</p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 77.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#p2i1" style="-sec-extract: exhibit;">Legal Proceedings</a></p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 9.4%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#p2i1">28</a></p> </td>
     </tr>

     <tr>
      <td style="width: 9.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">1A.</p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 77.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#p2i1a" style="-sec-extract: exhibit;">Risk Factors</a></p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 9.4%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#p2i1a">28</a></p> </td>
     </tr>

     <tr>
      <td style="width: 9.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">2.</p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 77.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#p2i2" style="-sec-extract: exhibit;">Unregistered Sales of Equity Securities and Use of Proceeds</a></p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 9.4%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#p2i2">28</a></p> </td>
     </tr>

     <tr>
      <td style="width: 9.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">3.</p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 77.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#p2i3" style="-sec-extract: exhibit;">Defaults Upon Senior Securities</a></p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 9.4%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#p2i3">28</a></p> </td>
     </tr>

     <tr>
      <td style="width: 9.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">4.</p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 77.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#p2i4" style="-sec-extract: exhibit;">Mine Safety Disclosures</a></p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 9.4%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#p2i4">28</a></p> </td>
     </tr>

     <tr>
      <td style="width: 9.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">5.</p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 77.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#p2i5" style="-sec-extract: exhibit;">Other Information</a></p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 9.4%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#p2i5">28</a></p> </td>
     </tr>

     <tr>
      <td style="width: 9.3%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">6.</p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 77.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="#p2i6" style="-sec-extract: exhibit;">Exhibits</a></p> </td>
      <td style="width: 2.1%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
      <td style="width: 9.4%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a class="tocPGNUM" href="#p2i6">29</a></p> </td>
     </tr>

    </tbody>
   </table>
   <div>
     &#xa0;
   </div>
   <p style="margin: 0pt 59.7pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
    <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
      1
    </div>
    <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
    <div class="PGHDR" style="width: 100%; text-align: left;">
     <div class="hf-row">
      <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
     </div>
    </div>
   </div>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="p1i1" title="p1i1" href="#"></a>PART I. FINANCIAL INFORMATION</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Item&#xa0;1. Financial Statements</b></p>
  <div>
    &#xa0;
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" style="margin: 0pt; width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
   <tbody>
    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Proto Labs, Inc.</b></p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Consolidated Balance Sheets</b></p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(In thousands, except share and per share amounts)</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">June 30,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">December 31,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;">&#xa0;</td><td style="padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(Unaudited)</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 74%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Assets</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current assets</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Cash and cash equivalents</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343077" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3" format="ixt:numdotdecimal" decimals="-3">41,909</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343078" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3" format="ixt:numdotdecimal" decimals="-3">127,603</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-align: justify; text-indent: 9pt;">Short-term marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343079" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:MarketableSecuritiesCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">18,341</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343080" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:MarketableSecuritiesCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">34,088</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom" class="GFJY4-DFU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Accounts receivable, net of allowance for doubtful accounts of <span style="-sec-ix-hidden:c75343084">$1,997</span> and <span style="-sec-ix-hidden:c75343085">$1,781</span> as of June 30, 2021 and December 31, 2020, respectively</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343081" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AccountsReceivableNetCurrent" scale="3" format="ixt:numdotdecimal" decimals="-4">83,470</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343082" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:AccountsReceivableNetCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">57,877</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Inventory</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343086" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:InventoryNet" scale="3" format="ixt:numdotdecimal" decimals="-3">9,111</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343088" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:InventoryNet" scale="3" format="ixt:numdotdecimal" decimals="-3">10,862</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Income taxes receivable</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343089" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:IncomeTaxesReceivable" scale="3" format="ixt:numdotdecimal" decimals="-3">4,575</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343090" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:IncomeTaxesReceivable" scale="3" format="ixt:numdotdecimal" decimals="-4">540</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Prepaid expenses and other current assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343091" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">10,107</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343092" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">11,032</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt;">Total current assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343093" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AssetsCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">167,513</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343094" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:AssetsCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">242,002</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 0pt;">Property and equipment, net</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343095" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">288,495</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343096" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">282,666</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Goodwill</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343097" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:numdotdecimal" decimals="-3">407,191</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343098" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:numdotdecimal" decimals="-3">128,752</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Other intangible assets, net</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343099" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:OtherIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">41,674</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343100" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:OtherIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-4">14,350</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Long-term marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343101" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:MarketableSecuritiesNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-5">28,700</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343102" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:MarketableSecuritiesNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">59,357</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Operating lease assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343103" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3" format="ixt:numdotdecimal" decimals="-3">8,801</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343104" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3" format="ixt:numdotdecimal" decimals="-3">9,855</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Finance lease assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343105" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAsset" scale="3" format="ixt:numdotdecimal" decimals="-3">2,147</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343106" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseRightOfUseAsset" scale="3" format="ixt:numdotdecimal" decimals="-3">2,396</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Other long-term assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343107" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:OtherAssetsNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">4,769</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343108" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:OtherAssetsNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">4,826</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt;">Total assets</p> </td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343109" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:numdotdecimal" decimals="-4">949,290</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343110" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:Assets" scale="3" format="ixt:numdotdecimal" decimals="-3">744,204</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 74%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 10%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 10%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Liabilities and shareholders' equity</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Current liabilities</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Accounts payable</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343113" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AccountsPayableCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">26,038</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343114" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:AccountsPayableCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">18,248</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Accrued compensation</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343115" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:EmployeeRelatedLiabilitiesCurrent" scale="3" format="ixt:numdotdecimal" decimals="-4">14,930</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343116" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:EmployeeRelatedLiabilitiesCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">11,989</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Accrued liabilities and other</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343117" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AccruedLiabilitiesAndOtherLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">15,072</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343118" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:AccruedLiabilitiesAndOtherLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">16,193</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Current contingent consideration</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343119" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationLiabilityCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">2,936</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343120" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationLiabilityCurrent" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Current operating lease liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c75343121" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">2,847</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonFraction id="c75343122" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">3,272</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Current finance lease liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343123" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">554</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343124" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">552</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Income taxes payable</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343125" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AccruedIncomeTaxesCurrent" scale="3" format="ixt:numdotdecimal" decimals="-4">40</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343126" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:AccruedIncomeTaxesCurrent" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt;">Total current liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343127" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:LiabilitiesCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">62,417</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343128" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:LiabilitiesCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">50,254</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Long-term contingent consideration</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343129" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationLiabilityNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">2,693</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343130" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationLiabilityNoncurrent" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Long-term operating lease liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343131" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">7,097</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343132" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">7,586</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Long-term finance lease liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343133" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">1,639</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343134" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FinanceLeaseLiabilityNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">1,919</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Long-term deferred tax liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343135" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" scale="3" format="ixt:numdotdecimal" decimals="-3">36,898</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343136" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" scale="3" format="ixt:numdotdecimal" decimals="-3">33,854</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Other long-term liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343137" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:OtherLiabilitiesNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">6,569</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343138" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:OtherLiabilitiesNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">6,235</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt;">Total liabilities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343139" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:Liabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">117,313</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343140" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:Liabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">99,848</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 74%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 10%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 10%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Shareholders' equity</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Preferred stock, <span style="-sec-ix-hidden:c75343144"><span style="-sec-ix-hidden:c75343145">$0.001</span></span> par value, authorized <span style="-sec-ix-hidden:c75343146"><span style="-sec-ix-hidden:c75343147">10,000,000</span></span> shares; issued and outstanding <span style="-sec-ix-hidden:c75343148"><span style="-sec-ix-hidden:c75343149"><span style="-sec-ix-hidden:c75343150"><span style="-sec-ix-hidden:c75343151">0</span></span></span></span> shares as of each of June 30, 2021 and December 31, 2020</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343142" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:PreferredStockValue" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343143" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:PreferredStockValue" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Common stock, <span style="-sec-ix-hidden:c75343154"><span style="-sec-ix-hidden:c75343155">$0.001</span></span> par value, authorized <span style="-sec-ix-hidden:c75343156"><span style="-sec-ix-hidden:c75343157">150,000,000</span></span> shares; issued and outstanding <span style="-sec-ix-hidden:c75343158"><span style="-sec-ix-hidden:c75343160">27,761,063</span></span> and <span style="-sec-ix-hidden:c75343159"><span style="-sec-ix-hidden:c75343161">26,776,796</span></span> shares as of June 30, 2021 and December 31, 2020, respectively</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343152" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:CommonStockValue" scale="3" format="ixt:numdotdecimal" decimals="-3">28</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343153" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:CommonStockValue" scale="3" format="ixt:numdotdecimal" decimals="-3">27</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Additional paid-in capital</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343162" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AdditionalPaidInCapitalCommonStock" scale="3" format="ixt:numdotdecimal" decimals="-3">461,597</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343163" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:AdditionalPaidInCapitalCommonStock" scale="3" format="ixt:numdotdecimal" decimals="-3">284,848</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Retained earnings</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343164" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:RetainedEarningsAccumulatedDeficit" scale="3" format="ixt:numdotdecimal" decimals="-3">378,467</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343165" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:RetainedEarningsAccumulatedDeficit" scale="3" format="ixt:numdotdecimal" decimals="-3">362,901</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Accumulated other comprehensive loss</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343166" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">8,115</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343167" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-4" sign="-">3,420</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt;">Total shareholders' equity</p> </td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343168" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">831,977</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343169" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">644,356</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt;">Total liabilities and shareholders' equity</p> </td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343170" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:LiabilitiesAndStockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-4">949,290</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343171" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:LiabilitiesAndStockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">744,204</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td></tr>
</tbody></table>
  </div>
  <p style="margin: 0pt 7.2pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt 7.2pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The accompanying notes are an integral part of these consolidated financial statements.</p>
  <p style="margin: 0pt 7.2pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     2
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <div>
    &#xa0;
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
   <tbody>
    <tr>
     <td style="width: 100%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Proto Labs, Inc.</b></p> </td>
    </tr>

    <tr>
     <td style="width: 100%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Consolidated Statements of Comprehensive Income</b></p> </td>
    </tr>

    <tr>
     <td style="width: 100%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(In thousands, except share and per share amounts)</b></p> </td>
    </tr>

    <tr>
     <td style="width: 100%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(Unaudited)</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;">
    <tbody>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended</em></em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended</em></em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 52%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Statements of Operations:</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Revenue</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343185" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">123,048</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343186" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">106,575</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343187" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">239,174</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343188" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">221,683</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Cost of revenue</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343189" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" format="ixt:numdotdecimal" decimals="-3">66,423</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343190" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" format="ixt:numdotdecimal" decimals="-3">54,119</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343191" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" format="ixt:numdotdecimal" decimals="-3">127,219</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343192" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" format="ixt:numdotdecimal" decimals="-3">111,127</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Gross profit</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343193" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:numdotdecimal" decimals="-3">56,625</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343194" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:numdotdecimal" decimals="-3">52,456</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343195" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:numdotdecimal" decimals="-3">111,955</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343196" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:GrossProfit" scale="3" format="ixt:numdotdecimal" decimals="-3">110,556</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Operating expenses</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Marketing and sales</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343198" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:SellingAndMarketingExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">21,044</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343199" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:SellingAndMarketingExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">16,936</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343200" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:SellingAndMarketingExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">40,524</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343201" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:SellingAndMarketingExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">35,116</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Research and development</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343202" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:ResearchAndDevelopmentExpense" scale="3" format="ixt:numdotdecimal" decimals="-4">11,060</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343203" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:ResearchAndDevelopmentExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">8,648</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343204" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:ResearchAndDevelopmentExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">23,241</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343205" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:ResearchAndDevelopmentExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">17,635</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">General and administrative</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343206" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:GeneralAndAdministrativeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">8,417</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343207" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:GeneralAndAdministrativeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">12,521</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343208" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:GeneralAndAdministrativeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">27,825</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343209" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:GeneralAndAdministrativeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">26,629</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 36pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt;">Total operating expenses</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343210" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:OperatingExpenses" scale="3" format="ixt:numdotdecimal" decimals="-3">40,521</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343211" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:OperatingExpenses" scale="3" format="ixt:numdotdecimal" decimals="-3">38,105</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343212" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:OperatingExpenses" scale="3" format="ixt:numdotdecimal" decimals="-4">91,590</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343213" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:OperatingExpenses" scale="3" format="ixt:numdotdecimal" decimals="-4">79,380</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Income from operations</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343214" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">16,104</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343215" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">14,351</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343216" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">20,365</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343217" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">31,176</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Other income (loss), net</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343218" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">137</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343219" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">767</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343220" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">176</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343221" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">1,821</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Income before income taxes</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343222" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:numdotdecimal" decimals="-3">16,241</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343223" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:numdotdecimal" decimals="-3">15,118</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343224" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:numdotdecimal" decimals="-3">20,189</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343225" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" scale="3" format="ixt:numdotdecimal" decimals="-3">32,997</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Provision for income taxes</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343226" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">3,326</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343227" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">2,511</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343228" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">3,562</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343229" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">6,406</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Net income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343230" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">12,915</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343231" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">12,607</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343232" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">16,627</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343233" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">26,591</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Net income per share:</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Basic</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343235" contextRef="d_2021-04-01_2021-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">0.47</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343236" contextRef="d_2020-04-01_2020-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">0.47</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343237" contextRef="d_2021-01-01_2021-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">0.60</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343238" contextRef="d_2020-01-01_2020-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">1.00</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Diluted</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343239" contextRef="d_2021-04-01_2021-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:numdotdecimal" decimals="INF">0.47</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343240" contextRef="d_2020-04-01_2020-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:numdotdecimal" decimals="INF">0.47</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343241" contextRef="d_2021-01-01_2021-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:numdotdecimal" decimals="INF">0.60</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343242" contextRef="d_2020-01-01_2020-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:numdotdecimal" decimals="INF">0.99</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Shares used to compute net income per share:</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Basic</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343244" contextRef="d_2021-04-01_2021-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">27,735,732</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343245" contextRef="d_2020-04-01_2020-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">26,660,498</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343246" contextRef="d_2021-01-01_2021-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">27,600,684</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343247" contextRef="d_2020-01-01_2020-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">26,718,652</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Diluted</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343248" contextRef="d_2021-04-01_2021-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">27,744,870</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343249" contextRef="d_2020-04-01_2020-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">26,760,866</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343250" contextRef="d_2021-01-01_2021-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">27,741,464</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343251" contextRef="d_2020-01-01_2020-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">26,837,938</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
      <td>&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Comprehensive Income (net of tax)</b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Comprehensive income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343253" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">14,896</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343254" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">12,971</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343255" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">11,932</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343256" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">23,975</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     </tr>

    </tbody>
   </table>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
   <tbody>
    <tr>
     <td style="width: 100%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The accompanying notes are an integral part of these consolidated financial statements.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     3
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <div>
    &#xa0;
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
   <tbody>
    <tr>
     <td style="width: 100%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Proto Labs, Inc.</b></p> </td>
    </tr>

    <tr>
     <td style="width: 100%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Consolidated Statements of Shareholders' Equity</b></p> </td>
    </tr>

    <tr>
     <td style="width: 100%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(In thousands, except share amounts)</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;">
    <tbody>
     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0); width: 10%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Common Stock</em></em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Additional</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Accumulated Other</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Paid-In</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Retained</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Comprehensive</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Shares</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Amount</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Capital</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Earnings</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Loss</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Total</em></b></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="width: 43%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 6%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 6%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 7%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 7%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 7%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
      <td style="width: 6%;">&#xa0;</td>
      <td style="width: 1%;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Balance at January 1, 2021</b></p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343275" contextRef="i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">26,776,796</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343276" contextRef="i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">27</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343277" contextRef="i_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">284,848</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343278" contextRef="i_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">362,901</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343279" contextRef="i_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-4" sign="-">3,420</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343280" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">644,356</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Common shares issued on exercise of options and other, net of shares withheld for tax obligations</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343281" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0" format="ixt:numdotdecimal" decimals="INF">48,955</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343282" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343283" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:numdotdecimal" decimals="-4" sign="-">290</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343284" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343285" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343286" contextRef="d_2021-01-01_2021-03-31" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:numdotdecimal" decimals="-4" sign="-">290</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Common shares issued for Hubs acquisition</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343287" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesAcquisitions" scale="0" format="ixt:numdotdecimal" decimals="INF">863,995</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343288" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueAcquisitions" scale="3" format="ixt:numdotdecimal" decimals="-3">1</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343289" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueAcquisitions" scale="3" format="ixt:numdotdecimal" decimals="-3">166,708</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343290" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueAcquisitions" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343291" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueAcquisitions" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343292" contextRef="d_2021-01-01_2021-03-31" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueAcquisitions" scale="3" format="ixt:numdotdecimal" decimals="-3">166,709</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Stock-based compensation expense</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343294" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343295" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:numdotdecimal" decimals="-4">5,620</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343296" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343297" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343298" contextRef="d_2021-01-01_2021-03-31" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:numdotdecimal" decimals="-4">5,620</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Repurchases of common stock</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343299" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodShares" scale="0" format="ixt:zerodash" decimals="INF" sign="-">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343300" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343301" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343302" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343303" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343304" contextRef="d_2021-01-01_2021-03-31" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Net income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343306" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343307" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343308" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">3,712</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343309" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343310" contextRef="d_2021-01-01_2021-03-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">3,712</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"><i>Other comprehensive loss</i></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 7%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 7%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 7%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 27pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Foreign currency translation adjustment</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343313" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343314" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343315" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343316" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">6,842</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343317" contextRef="d_2021-01-01_2021-03-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">6,842</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 27pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Net unrealized gains (losses) on investments in securities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343319" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343320" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343321" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343322" contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">166</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343323" contextRef="d_2021-01-01_2021-03-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">166</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Comprehensive loss</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 7%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 7%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 7%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343329" contextRef="d_2021-01-01_2021-03-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">2,964</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Balance at March 31, 2021</b></p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343330" contextRef="i_2021-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">27,689,746</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343331" contextRef="i_2021-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">28</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343332" contextRef="i_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">456,886</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343333" contextRef="i_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">366,613</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c75343334" contextRef="i_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">10,096</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343335" contextRef="i_2021-03-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">813,431</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Common shares issued on exercise of options and other, net of shares withheld for tax obligations</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343336" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0" format="ixt:numdotdecimal" decimals="INF">85,317</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343337" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343338" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">81</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343339" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343340" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343341" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">81</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Stock-based compensation expense</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><em style="font: inherit;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343343" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343344" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:numdotdecimal" decimals="-3">4,941</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343345" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343346" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343347" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:numdotdecimal" decimals="-3">4,941</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Repurchases of common stock</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343348" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodShares" scale="0" format="ixt:numdotdecimal" decimals="INF">14,000</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343349" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343350" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">149</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343351" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">1,061</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343352" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343353" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-4">1,210</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Net income</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><em style="font: inherit;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343355" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343356" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343357" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">12,915</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343358" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343359" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">12,915</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;"><i>Other comprehensive income</i></p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 7%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 7%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 7%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%; padding: 0; margin: 0">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%; padding: 0; margin: 0">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Foreign currency translation adjustment</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><em style="font: inherit;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343362" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343363" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343364" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343365" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-4">2,030</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343366" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-4">2,030</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Net unrealized gains (losses) on investments in securities</p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><em style="font: inherit;">-</em></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343368" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343369" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343370" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343371" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">49</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343372" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">49</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td>
     </tr>

     <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Comprehensive income</p> </td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 7%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 7%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 7%;"><em style="font: inherit;">&#xa0;</em></td>
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343378" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">14,896</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     </tr>

     <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
      <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Balance at June 30, 2021</b></p> </td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343379" contextRef="i_2021-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">27,761,063</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343380" contextRef="i_2021-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">28</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343381" contextRef="i_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">461,597</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343382" contextRef="i_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">378,467</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c75343383" contextRef="i_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">8,115</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
      <td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343384" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">831,977</ix:nonFraction></td>
      <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     </tr>

    </tbody>
   </table>
  </div>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom" class="GFJY4-DFU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 10%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Common Stock</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Additional</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 7%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Accumulated Other</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom" class="GFJY4-DFU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Paid-In</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Retained</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Comprehensive</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom" class="GFJY4-DFU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Shares</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Amount</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Capital</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Earnings</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Loss</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">Total</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 43%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 6%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 6%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 7%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 7%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 7%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 6%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Balance at January 1, 2020</b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343385" contextRef="i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">26,786,459</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343386" contextRef="i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">27</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343387" contextRef="i_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">268,059</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343388" contextRef="i_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">324,722</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343389" contextRef="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">7,018</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343390" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-4">585,790</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Common shares issued on exercise of options and other, net of shares withheld for tax obligations</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343391" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0" format="ixt:numdotdecimal" decimals="INF">23,525</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343392" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343393" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">902</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343394" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343395" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343396" contextRef="d_2020-01-01_2020-03-31" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">902</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Stock-based compensation expense</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343398" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343399" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:numdotdecimal" decimals="-3">3,033</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343400" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343401" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343402" contextRef="d_2020-01-01_2020-03-31" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:numdotdecimal" decimals="-3">3,033</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Repurchases of common stock</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343403" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodShares" scale="0" format="ixt:numdotdecimal" decimals="INF">161,460</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343404" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343405" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">1,616</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343406" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">9,569</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343407" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343408" contextRef="d_2020-01-01_2020-03-31" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">11,185</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Net income</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343410" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343411" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343412" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">13,984</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343413" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343414" contextRef="d_2020-01-01_2020-03-31" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">13,984</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"><i>Other comprehensive income</i></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 7%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 7%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 7%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 27pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Foreign currency translation adjustment</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343417" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343418" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343419" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343420" contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-4" sign="-">2,980</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343421" contextRef="d_2020-01-01_2020-03-31" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-4" sign="-">2,980</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Comprehensive income</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 7%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 7%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 7%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343427" contextRef="d_2020-01-01_2020-03-31" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">11,004</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Balance at March 31, 2020</b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343428" contextRef="i_2020-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">26,648,524</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343429" contextRef="i_2020-03-31_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">27</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343430" contextRef="i_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">268,574</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343431" contextRef="i_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">329,137</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c75343432" contextRef="i_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">9,998</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343433" contextRef="i_2020-03-31" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-4">587,740</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Common shares issued on exercise of options and other, net of shares withheld for tax obligations</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343434" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation" scale="0" format="ixt:numdotdecimal" decimals="INF">96,186</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343435" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343436" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:numdotdecimal" decimals="-5">400</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343437" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343438" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343439" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" format="ixt:numdotdecimal" decimals="-5">400</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Stock-based compensation expense</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343441" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343442" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:numdotdecimal" decimals="-3">3,639</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343443" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343444" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343445" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" format="ixt:numdotdecimal" decimals="-3">3,639</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Repurchases of common stock</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343446" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodShares" scale="0" format="ixt:numdotdecimal" decimals="INF">38,154</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343447" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343448" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">382</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343449" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">3,119</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343450" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343451" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:StockRepurchasedAndRetiredDuringPeriodValue" scale="3" format="ixt:numdotdecimal" decimals="-3">3,501</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Net income</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343453" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343454" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343455" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">12,607</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343456" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343457" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">12,607</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;"><i>Other comprehensive income</i></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 7%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 7%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 7%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;"><i>&#xa0;</i></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 27pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt; text-indent: -9pt;">Foreign currency translation adjustment</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><em style="font: inherit;">-</em></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 6%;"><ix:nonFraction id="c75343460" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" xsi:nil="true"></ix:nonFraction></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343461" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343462" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343463" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">364</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343464" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">364</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt; text-indent: -9pt;">Comprehensive income</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 6%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 7%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 7%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 7%;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343470" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" format="ixt:numdotdecimal" decimals="-3">12,971</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 43%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Balance at June 30, 2020</b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343471" contextRef="i_2020-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="Share" name="us-gaap:CommonStockSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">26,706,556</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343472" contextRef="i_2020-06-30_StatementEquityComponentsAxis-CommonStockMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">27</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343473" contextRef="i_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">272,231</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343474" contextRef="i_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">338,625</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c75343475" contextRef="i_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">9,634</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 6%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343476" contextRef="i_2020-06-30" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3">601,249</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
  </div>
  <p style="margin: 0; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</p>
  <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
   <tbody>
    <tr>
     <td style="width: 100%; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The accompanying notes are an integral part of these consolidated financial statements.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     4
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <div>
    &#xa0;
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" style="margin: 0pt; width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
   <tbody>
    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Proto Labs, Inc.</b></p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Consolidated Statements of Cash Flows</b></p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(In thousands)</b></p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>(Unaudited)</b></p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div>
   <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; width: 14%;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;">&#xa0;</td><td style="padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 14%;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;">&#xa0;</td><td style="padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td><td style="padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 74%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 10%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 10%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 74%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Operating activities</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net income</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343484" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">16,627</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343485" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">26,591</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Adjustments to reconcile net income to net cash provided by operating activities:</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;">Depreciation and amortization</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343487" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">20,127</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343488" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:DepreciationDepletionAndAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">15,855</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;">Stock-based compensation expense</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343489" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:ShareBasedCompensation" scale="3" format="ixt:numdotdecimal" decimals="-3">10,561</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343490" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:ShareBasedCompensation" scale="3" format="ixt:numdotdecimal" decimals="-3">6,672</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;">Deferred taxes</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343491" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">419</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343492" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3" format="ixt:numdotdecimal" decimals="-3">5,651</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;">Amortization of marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343493" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">261</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343494" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">129</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;">Realized gain on available-sale-securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343495" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:DebtSecuritiesAvailableForSaleRealizedGainLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">117</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343496" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:DebtSecuritiesAvailableForSaleRealizedGainLoss" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom" class="GFJY4-DFU-com-rdg-thunderdome-client-resources-CssResource-html-lineItem-v2v-addition"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;">Fair value of contingent consideration</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75348135" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">7,763</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75348136" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;">Other</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343497" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:OtherNoncashIncomeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">125</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343498" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:OtherNoncashIncomeExpense" scale="3" format="ixt:numdotdecimal" decimals="-3">854</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 36pt;">Changes in operating assets and liabilities:</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 36pt;">Accounts receivable</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343500" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="3" format="ixt:numdotdecimal" decimals="-3">23,296</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343501" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="3" format="ixt:numdotdecimal" decimals="-3">4,292</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 36pt;">Inventories</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343502" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:IncreaseDecreaseInInventories" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">1,727</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343503" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:IncreaseDecreaseInInventories" scale="3" format="ixt:numdotdecimal" decimals="-3">801</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 36pt;">Prepaid expenses and other</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343504" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3" format="ixt:numdotdecimal" decimals="-4" sign="-">1,810</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343505" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3" format="ixt:numdotdecimal" decimals="-3">1,068</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 36pt;">Income taxes</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343506" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">4,015</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343507" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">1,341</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 36pt;">Accounts payable</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343508" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3" format="ixt:numdotdecimal" decimals="-3">5,011</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343509" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3" format="ixt:numdotdecimal" decimals="-3">1,082</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 36pt;">Accrued liabilities and other</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343512" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:IncreaseDecreaseInOtherOperatingLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">748</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343513" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:IncreaseDecreaseInOtherOperatingLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">5,793</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net cash provided by operating activities</p> </td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343514" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3">20,729</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343515" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3">53,417</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 74%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 10%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 10%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Investing activities</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Purchases of property, equipment and other capital assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343517" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">23,929</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343518" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" format="ixt:numdotdecimal" decimals="-3">33,305</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Cash used for acquisitions, net of cash acquired</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343519" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="3" format="ixt:numdotdecimal" decimals="-3">127,413</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343520" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Purchases of other assets and investments</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343521" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:PaymentsToAcquireOtherInvestments" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343522" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:PaymentsToAcquireOtherInvestments" scale="3" format="ixt:numdotdecimal" decimals="-6">3,000</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Purchases of marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343523" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt" scale="3" format="ixt:numdotdecimal" decimals="-3">15,159</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343524" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt" scale="3" format="ixt:numdotdecimal" decimals="-3">57,212</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Proceeds from sales of marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343525" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:ProceedsFromSaleOfHeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">47,694</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343526" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:ProceedsFromSaleOfHeldToMaturitySecurities" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Proceeds from maturities of marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343527" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">13,725</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343528" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">28,225</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net cash used in investing activities</p> </td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343529" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">105,082</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">)</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343530" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">65,292</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 74%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 10%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td><td style="width: 10%;">&#xa0;</td><td style="width: 1%;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Financing activities</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 10%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Proceeds from exercises of stock options</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343532" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" scale="3" format="ixt:numdotdecimal" decimals="-3">3,838</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343533" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" scale="3" format="ixt:numdotdecimal" decimals="-3">2,855</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Purchases of shares withheld for tax obligations</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343534" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation" scale="3" format="ixt:numdotdecimal" decimals="-3">4,209</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343535" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation" scale="3" format="ixt:numdotdecimal" decimals="-3">3,367</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Repurchases of common stock</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343536" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3" format="ixt:numdotdecimal" decimals="-4">1,210</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343537" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3" format="ixt:numdotdecimal" decimals="-3">14,686</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Principal repayments of finance lease obligations</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343538" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" scale="3" format="ixt:numdotdecimal" decimals="-3">275</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343539" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:FinanceLeasePrincipalPayments" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net cash used in financing activities</p> </td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343540" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">1,856</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">)</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343541" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">15,198</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Effect of exchange rate changes on cash and cash equivalents</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343542" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:numdotdecimal" decimals="-3">515</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343543" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">149</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Net decrease in cash and cash equivalents</b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343544" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">85,694</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343545" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">27,222</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; width: 74%;"> <p style="margin-top: 0pt; margin-bottom: 0pt">Cash and cash equivalents, beginning of period</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343546" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:numdotdecimal" decimals="-3">127,603</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343547" contextRef="i_2019-12-31" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:numdotdecimal" decimals="-3">125,225</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 74%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Cash and cash equivalents, end of period</b></p> </td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343548" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:numdotdecimal" decimals="-3">41,909</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343549" contextRef="i_2020-06-30" unitRef="USD" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" scale="3" format="ixt:numdotdecimal" decimals="-3">98,003</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td></tr>
</tbody></table>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" style="margin: 0pt; width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
   <tbody>
    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 100%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The accompanying notes are an integral part of these consolidated financial statements.</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     5
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" id="c1904961" escape="true">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">1</em> &#x2013; Basis of Presentation</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The unaudited interim Consolidated Financial Statements of Proto Labs, Inc. (Protolabs, the Company, we, us or our) have been prepared in accordance with accounting principles generally accepted in the United States of America (U.S. GAAP) for interim financial information and with the instructions to Form <em style="font: inherit;">10</em>-Q and Article&#xa0;<em style="font: inherit;">10</em> of Regulation S-<em style="font: inherit;">X.</em> In the opinion of management, the accompanying financial statements reflect all adjustments necessary for a fair presentation of the Company&#x2019;s statements of financial position, results of operations and cash flows for the periods presented. Except as otherwise disclosed herein, these adjustments consist of normal, recurring items. Operating results for interim periods are <em style="font: inherit;">not</em> necessarily indicative of results that <em style="font: inherit;"> may </em>be expected for the fiscal year as a whole.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The preparation of the financial statements in conformity with U.S. GAAP requires management to make estimates and assumptions that affect the reported amounts of assets, liabilities, revenues, expenses, and the related disclosures at the date of the financial statements and during the reporting period. Actual results could materially differ from these estimates. For further information, refer to the audited Consolidated Financial Statements and Notes thereto included in the Company&#x2019;s Annual Report on Form <em style="font: inherit;">10</em>-K for the year ended&#xa0;<em style="font: inherit;"> December 31, 2020</em> as filed with the Securities and Exchange Commission (SEC) on <em style="font: inherit;"> February 19, 2021.</em></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The accompanying Consolidated Balance Sheet as of <em style="font: inherit;"> December 31, 2020</em> was derived from the audited Consolidated Financial Statements but does <em style="font: inherit;">not</em> include all disclosures required by U.S. GAAP for a full set of financial statements. This Form <em style="font: inherit;">10</em>-Q should be read in conjunction with the Company&#x2019;s Consolidated Financial Statements and Notes included in the Annual Report on Form <em style="font: inherit;">10</em>-K filed on <em style="font: inherit;"> February 19, 2021 </em>as referenced above.</p>
  </ix:nonNumeric>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;&#xa0;</p>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:SignificantAccountingPoliciesTextBlock" id="c1904962" escape="true">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">2</em> &#x2013; Recent Accounting Pronouncements</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Recently Adopted Accounting Pronouncements</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">In <em style="font: inherit;"> December 2019, </em>the Financial Accounting Standards Board issued Accounting Standards Update (ASU) <em style="font: inherit;">2019</em>-<em style="font: inherit;">12,</em> <i>Income Taxes (Topic <em style="font: inherit;">740</em>): Simplifying the Accounting for Income Taxes</i> (ASU <em style="font: inherit;">2019</em>-<em style="font: inherit;">12</em>). ASU <em style="font: inherit;">2019</em>-<em style="font: inherit;">12</em> attempts to simplify aspects of accounting for franchise taxes and enacted changes in tax laws or rates and clarifies the accounting for transactions that result in a step-up in the tax basis of goodwill. ASU <em style="font: inherit;">2019</em>-<em style="font: inherit;">12</em> is effective for public business entities for fiscal years beginning after <em style="font: inherit;"> December 15, 2020, </em>including interim periods within that fiscal year. The Company adopted ASU <em style="font: inherit;">2019</em>-<em style="font: inherit;">12</em> on <em style="font: inherit;"> January 1, 2021 </em>and there was <em style="font: inherit;">no</em> material impact on the Company&#x2019;s consolidated financial statements.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:EarningsPerShareTextBlock" id="c1904963" escape="true">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">3</em> &#x2013; Net Income per Common Share</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Basic net income per share is computed based on the weighted-average number of common shares outstanding. Diluted net income per share is computed based on the weighted-average number of common shares outstanding, increased by the number of additional shares that would have been outstanding had potentially dilutive common shares been issued and reduced by the number of shares the Company could have repurchased from the proceeds from issuance of the potentially dilutive shares. Potentially dilutive shares of common stock include stock options, restricted stock units and restricted stock awards granted under stock-based compensation plans and shares committed to be purchased under the employee stock purchase plan. Performance stock units&#xa0;are excluded from the calculation of dilutive potential common shares until the performance conditions have been satisfied.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The table below sets forth the computation of basic and diluted net income per share:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 6pt auto 0pt; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" id="c1904964" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 48%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">(in thousands, except share and per share amounts)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Net income</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343586" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">12,915</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343587" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">12,607</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343588" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">16,627</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343589" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:NetIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">26,591</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Basic - weighted-average shares outstanding:</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343590" contextRef="d_2021-04-01_2021-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">27,735,732</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343591" contextRef="d_2020-04-01_2020-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">26,660,498</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343592" contextRef="d_2021-01-01_2021-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">27,600,684</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343593" contextRef="d_2020-01-01_2020-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">26,718,652</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Effect of dilutive securities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Employee stock options and other</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343595" contextRef="d_2021-04-01_2021-06-30" unitRef="Share" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" scale="0" format="ixt:numdotdecimal" decimals="INF">9,138</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343596" contextRef="d_2020-04-01_2020-06-30" unitRef="Share" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" scale="0" format="ixt:numdotdecimal" decimals="INF">100,368</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343597" contextRef="d_2021-01-01_2021-06-30" unitRef="Share" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" scale="0" format="ixt:numdotdecimal" decimals="INF">140,780</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343598" contextRef="d_2020-01-01_2020-06-30" unitRef="Share" name="us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" scale="0" format="ixt:numdotdecimal" decimals="INF">119,286</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Diluted - weighted-average shares outstanding:</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343599" contextRef="d_2021-04-01_2021-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">27,744,870</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343600" contextRef="d_2020-04-01_2020-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">26,760,866</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343601" contextRef="d_2021-01-01_2021-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">27,741,464</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343602" contextRef="d_2020-01-01_2020-06-30" unitRef="Share" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="0" format="ixt:numdotdecimal" decimals="INF">26,837,938</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Net income per share:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Basic</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343604" contextRef="d_2021-04-01_2021-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">0.47</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343605" contextRef="d_2020-04-01_2020-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">0.47</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343606" contextRef="d_2021-01-01_2021-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">0.60</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343607" contextRef="d_2020-01-01_2020-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareBasic" scale="0" format="ixt:numdotdecimal" decimals="INF">1.00</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Diluted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343608" contextRef="d_2021-04-01_2021-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:numdotdecimal" decimals="INF">0.47</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343609" contextRef="d_2020-04-01_2020-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:numdotdecimal" decimals="INF">0.47</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343610" contextRef="d_2021-01-01_2021-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:numdotdecimal" decimals="INF">0.60</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343611" contextRef="d_2020-01-01_2020-06-30" unitRef="USDPerShare" name="us-gaap:EarningsPerShareDiluted" scale="0" format="ixt:numdotdecimal" decimals="INF">0.99</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0pt auto 6pt; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p><ix:exclude><p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></p>
   <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
    <div class="PGFTR" style="text-align: center; width: 100%">
     <div class="hf-row">
      <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       <em style="font: inherit;">6</em>
      </div>
     </div>
    </div>
    <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
    <div class="PGHDR" style="text-align: left; width: 100%">
     <div class="hf-row">
      <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
       <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Table of Contents</a>
      </div>
     </div>
    </div>
   </div>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p></ix:exclude><ix:exclude></ix:exclude>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:BusinessCombinationDisclosureTextBlock" id="c1904965" escape="true">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">4</em> &#x2013; Business Combinations</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">On <em style="font: inherit;"> January 22, 2021, </em>the Company acquired all outstanding shares of <em style="font: inherit;">3D</em> Hubs, Inc. (&#x201c;Hubs&#x201d;), for $<ix:nonFraction id="c75343614" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationConsiderationTransferred1" scale="6" format="ixt:numdotdecimal" decimals="-5">294.1</ix:nonFraction> million, consisting of $<ix:nonFraction id="c75343615" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="6" format="ixt:numdotdecimal" decimals="-5">127.4</ix:nonFraction> million in cash and <ix:nonFraction id="c75343616" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="Share" name="us-gaap:BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" scale="0" format="ixt:numdotdecimal" decimals="INF">863,995</ix:nonFraction> shares of the Company's common stock valued at $<ix:nonFraction id="c75343617" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" scale="6" format="ixt:numdotdecimal" decimals="-5">166.7</ix:nonFraction> million on the date of close. Up to an additional $<ix:nonFraction id="c75343618" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" scale="6" format="ixt:numdotdecimal" decimals="-5">52.8</ix:nonFraction> million of contingent consideration is payable after closing, subject to the satisfaction of performance-based targets during fiscal year <em style="font: inherit;">2021</em> and fiscal year <em style="font: inherit;">2022,</em> consisting of up to $<ix:nonFraction id="c75343621" contextRef="d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember" unitRef="USD" name="us-gaap:PaymentsToAcquireBusinessesGross" scale="6" format="ixt:numdotdecimal" decimals="-6">25.0</ix:nonFraction> million in cash and up to <ix:nonFraction id="c75343622" contextRef="d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember" unitRef="Share" name="us-gaap:BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" scale="0" format="ixt:numdotdecimal" decimals="INF">143,983</ix:nonFraction> shares of the Company's common stock valued at $<ix:nonFraction id="c75343623" contextRef="d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember" unitRef="USD" name="us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" scale="6" format="ixt:numdotdecimal" decimals="-5">27.8</ix:nonFraction> million on the date of close.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#xa0;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Hubs is based in Amsterdam, Netherlands and is a leading online manufacturing platform that provides customers with on-demand access to a global network of premium manufacturing partners. The acquisition enhances the Company&#x2019;s value proposition by expanding the customer offerings, enabling the Company to more holistically serve its customers.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#xa0;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">The fair value of the consideration paid for this acquisition has been allocated on a preliminary basis to the assets purchased and liabilities assumed based on their estimated fair values as of the acquisition date, with any excess recorded as goodwill.&#xa0; The goodwill associated with the acquisition represents both the strategic and growth opportunities by significantly expanding the customer offering with a network of premium manufacturing partners. The goodwill related to the acquisition is <em style="font: inherit;">not</em> deductible for tax purposes.&#xa0;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#xa0;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">The Company recorded a contingent consideration liability of $<ix:nonFraction id="c75343626" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationLiability" scale="6" format="ixt:numdotdecimal" decimals="-5">13.6</ix:nonFraction> million as of the acquisition date representing the estimated fair value of the amounts payable to former shareholders, as outlined under the terms of the merger agreement, payable subject to the satisfaction of performance-based targets during fiscal year <em style="font: inherit;">2021</em> and fiscal year <em style="font: inherit;">2022,</em> consisting of up to <em style="font: inherit;">$25.0</em> million in cash and up to <em style="font: inherit;">143,983</em> shares of the Company's common stock valued at <em style="font: inherit;">$27.8</em> million on the date of close. The fair value of the contingent consideration (Level <em style="font: inherit;">3</em>) is determined using a Monte Carlo pricing model. In the <em style="font: inherit;">second</em> quarter of <em style="font: inherit;">2021,</em> the Company recorded a $<ix:nonFraction id="c75343635" contextRef="d_2021-04-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" scale="6" format="ixt:numdotdecimal" decimals="-5" sign="-">7.8</ix:nonFraction> million decrease to the estimated fair value of the contingent consideration liabilities, which was included as a decrease in general and administrative expense in the Consolidated Statements of Comprehensive Income. Fluctuations due to foreign currency translation have been recorded in the Consolidated Statements of Shareholders&#x2019; Equity.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#xa0;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">The results of Hubs since the date of acquisition have been included with Protolabs' results. Pro forma disclosures of the consolidated results of the Company with the full year effects of Hubs, as if the acquisition had occurred on <em style="font: inherit;"> January 1, 2020, </em>are <em style="font: inherit;">not</em> required and have <em style="font: inherit;">not</em> been separately presented since the impact to the Company's results of operations was <em style="font: inherit;" class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted">not</em> material.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#xa0;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">The acquisition has been accounted for under the acquisition method of accounting in accordance with ASC <em style="font: inherit;">805,</em> <i>Business Combinations</i>. In the <em style="font: inherit;">second</em> quarter of <em style="font: inherit;">2021,</em> the Company recorded adjustments to the preliminary allocation, including a $<ix:nonFraction id="c75343641" contextRef="d_2021-04-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles" scale="6" format="ixt:numdotdecimal" decimals="-5" sign="-">3.9</ix:nonFraction> million decrease to intangible assets, a $<ix:nonFraction id="c75343642" contextRef="d_2021-04-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:GoodwillPurchaseAccountingAdjustments" scale="6" format="ixt:numdotdecimal" decimals="-5">6.4</ix:nonFraction> million increase to goodwill, a $<ix:nonFraction id="c75343643" contextRef="d_2021-04-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="prlb:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration" scale="6" format="ixt:numdotdecimal" decimals="-5">3.3</ix:nonFraction>&#xa0;million increase to contingent consideration, a $<ix:nonFraction id="c75343644" contextRef="d_2021-04-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="prlb:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities" scale="6" format="ixt:numdotdecimal" decimals="-5" sign="-">0.5</ix:nonFraction> million decrease to deferred tax liabilities, and a decrease to cash paid of $<ix:nonFraction id="c75343645" contextRef="d_2021-04-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="prlb:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid" scale="6" format="ixt:numdotdecimal" decimals="-5" sign="-">0.3</ix:nonFraction> million. The adjustments were driven by changes to the preliminary valuation and finalization of the working capital calculation. As of <em style="font: inherit;"> June 30, 2021, </em>the allocation of purchase price to assets and liabilities is preliminary. The purchase price allocation will be finalized in <em style="font: inherit;">2021.</em> The preliminary allocation is as follows:</p>
   <hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 6pt auto 0pt auto;" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember" name="us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" id="c1904966" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><b><em style="font: inherit;">Acquisition</em></b></td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Assets acquired:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="font-family: Times New Roman; font-size: 10pt;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Current assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343650" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" scale="3" format="ixt:numdotdecimal" decimals="-3">2,497</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Intangible assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343651" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets" scale="3" format="ixt:numdotdecimal" decimals="-4">30,770</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Goodwill</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343652" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:numdotdecimal" decimals="-3">281,845</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Other long-term assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343653" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" scale="3" format="ixt:numdotdecimal" decimals="-3">1,139</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total assets acquired</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343654" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="prlb:BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" scale="3" format="ixt:numdotdecimal" decimals="-3">316,251</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Liabilities assumed:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="font-family: Times New Roman; font-size: 10pt;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt">Current contingent consideration</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt"><ix:nonFraction id="c75343656" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="prlb:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">7,093</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Current liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343657" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">5,666</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt">Long-term contingent consideration</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt"><ix:nonFraction id="c75343658" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="prlb:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent" scale="3" format="ixt:numdotdecimal" decimals="-3">6,507</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Long-term deferred tax liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343659" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">2,608</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Other long-term liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343660" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">255</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total liabilities assumed</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343661" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" scale="3" format="ixt:numdotdecimal" decimals="-3">22,129</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net assets acquired</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343662" contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" scale="3" format="ixt:numdotdecimal" decimals="-3">294,122</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Cash paid</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343663" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:PaymentsToAcquireBusinessesGross" scale="3" format="ixt:numdotdecimal" decimals="-3">133,847</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Cash acquired</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343664" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:CashAcquiredFromAcquisition" scale="3" format="ixt:numdotdecimal" decimals="-3">6,434</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net cash consideration</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343665" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="3" format="ixt:numdotdecimal" decimals="-3">127,413</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Equity portion of purchase price</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343666" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" scale="3" format="ixt:numdotdecimal" decimals="-3">166,709</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total purchase consideration</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343667" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:BusinessCombinationConsiderationTransferred1" scale="3" format="ixt:numdotdecimal" decimals="-3">294,122</ix:nonFraction></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0pt auto 6pt auto;" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p><ix:exclude><p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></p>
   <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
    <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     <em style="font: inherit;">7</em>
    </div>
    <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
    <div class="PGHDR" style="width: 100%; text-align: left;">
     <div class="hf-row">
      <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
     </div>
    </div>
   </div>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p></ix:exclude><ix:exclude></ix:exclude>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock" id="c1904967" escape="true">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">5</em> &#x2013; Goodwill and Other Intangible Assets</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The changes in the carrying amount of goodwill during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> were as follows:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:ScheduleOfGoodwillTextBlock" id="c1904968" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 83%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><b><em style="font: inherit;">Six Months Ended June 30, 2021</em></b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Balance as of the beginning of the period</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343697" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:numdotdecimal" decimals="-3">128,752</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Goodwill acquired during the period</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343698" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:GoodwillAcquiredDuringPeriod" scale="3" format="ixt:numdotdecimal" decimals="-3">281,845</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt">Foreign currency translation adjustments</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343699" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:GoodwillForeignCurrencyTranslationGainLoss" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">3,406</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Balance as of the end of the period</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343700" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:Goodwill" scale="3" format="ixt:numdotdecimal" decimals="-3">407,191</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Goodwill increased $<ix:nonFraction id="c75343670" contextRef="d_2021-01-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:GoodwillAcquiredDuringPeriod" scale="6" format="ixt:numdotdecimal" decimals="-5">281.8</ix:nonFraction> million during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021 </em>as a result of our acquisition of Hubs. Goodwill has been allocated to the acquired Hubs entities consisting of goodwill of&#xa0;<span style="-sec-ix-hidden:c75343673">&#x20ac;106.5</span> million in Europe and $<ix:nonFraction id="c75343674" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:GoodwillAcquiredDuringPeriod" scale="6" format="ixt:numdotdecimal" decimals="-5">152.2</ix:nonFraction> million in the United States as of the date of the acquisition. The Euro denominated goodwill is translated at the end of each period using the current exchange rates resulting in a foreign currency translation adjustment that is recorded as a component of Other Comprehensive Income.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Intangible assets other than goodwill at&#xa0;<em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;"> December 31, 2020</em> were as follows:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" id="c1904969" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="10" style="width: 19%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">June 30, 2021</em></em></em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="10" style="width: 19%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2020</em></em></em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Useful</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="1" rowspan="1" style="padding: 0px; width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Weighted Average</em></b></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Gross</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Accumulated Amortization</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Net</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Gross</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Accumulated Amortization</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Net</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Life (in years)</em></b></p> </td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="1" rowspan="1" style="padding: 0px; width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Useful Life Remaining (in years)</em></b></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Intangible assets with finite lives:</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 5%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 5%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 5%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 5%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 14%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Marketing assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$<ix:nonFraction id="c75343722" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-4">930</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$(<ix:nonFraction id="c75343723" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">667</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$<ix:nonFraction id="c75343724" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">263</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$<ix:nonFraction id="c75343725" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-4">930</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$(<ix:nonFraction id="c75343726" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-4" sign="-">620</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$<ix:nonFraction id="c75343727" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-4">310</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c75343729" format="ixt-sec:duryear">10.0</ix:nonNumeric></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c75343731" format="ixt-sec:duryear">2.8</ix:nonNumeric></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Non-compete agreement</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343732" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-3">853</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(<ix:nonFraction id="c75343733" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">297</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343734" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">556</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343735" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-4">270</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(<ix:nonFraction id="c75343736" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">238</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343737" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">32</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MinimumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c75343738" format="ixt-sec:duryear">2.0</ix:nonNumeric> - <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MaximumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c75343740" format="ixt-sec:duryear">5.0</ix:nonNumeric></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c75343741" format="ixt-sec:duryear">3.3</ix:nonNumeric></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Software technology</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343742" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-3">13,229</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(<ix:nonFraction id="c75343743" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-4">4,330</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343744" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">8,899</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343745" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-3">13,229</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(<ix:nonFraction id="c75343746" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">3,645</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343747" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">9,584</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c75343749" format="ixt-sec:duryear">10.0</ix:nonNumeric></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c75343751" format="ixt-sec:duryear">7.0</ix:nonNumeric></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Software platform</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343752" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-4">27,170</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(<ix:nonFraction id="c75343753" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">1,089</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343754" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">26,081</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343755" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343756" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343757" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c75343759" format="ixt-sec:duryear">10.0</ix:nonNumeric></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c75343761" format="ixt-sec:duryear">9.6</ix:nonNumeric></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Tradenames</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343762" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-3">365</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(<ix:nonFraction id="c75343763" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">51</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343764" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">314</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343765" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343766" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"><ix:nonFraction id="c75343767" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c75343769" format="ixt-sec:duryear">3.0</ix:nonNumeric></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c75343771" format="ixt-sec:duryear">2.6</ix:nonNumeric></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Customer relationships</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343772" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-3">12,292</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343773" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">6,731</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343774" contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">5,561</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343775" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-4">10,070</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343776" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">5,646</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#xa0;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343777" contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">4,424</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MinimumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c75343778" format="ixt-sec:duryear">3.0</ix:nonNumeric> - <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MaximumMember" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="c75343780" format="ixt-sec:duryear">9.0</ix:nonNumeric></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember" name="us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" id="c75343781" format="ixt-sec:duryear">2.3</ix:nonNumeric></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total intangible assets</p> </td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 5%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"><ix:nonFraction id="c75343782" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-3">54,839</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">&#xa0;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 7%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">(<ix:nonFraction id="c75343783" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">13,165</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 5%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"><ix:nonFraction id="c75343784" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">41,674</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">&#xa0;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 5%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"><ix:nonFraction id="c75343785" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" format="ixt:numdotdecimal" decimals="-3">24,499</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">&#xa0;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 7%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">(<ix:nonFraction id="c75343786" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" format="ixt:numdotdecimal" decimals="-3">10,149</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 5%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"><ix:nonFraction id="c75343787" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-4">14,350</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#xa0;</em></td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#xa0;</em></td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Intangible assets increased $<ix:nonFraction id="c75343675" contextRef="d_2021-01-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:FinitelivedIntangibleAssetsAcquired1" scale="6" format="ixt:numdotdecimal" decimals="-5">30.8</ix:nonFraction> million during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021 </em>as a result of our acquisition of Hubs. Intangible assets have been allocated to the acquired Hubs entities consisting of intangible assets of&#xa0;<span style="-sec-ix-hidden:c75343677">&#x20ac;11.6</span> million in Europe and $<ix:nonFraction id="c75343678" contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_StatementGeographicalAxis-US" unitRef="USD" name="us-gaap:FinitelivedIntangibleAssetsAcquired1" scale="6" format="ixt:numdotdecimal" decimals="-5">16.6</ix:nonFraction> million in the United States as of the date of the acquisition. The Euro denominated intangible assets are translated at the end of each period using the current exchange rates resulting in a foreign currency translation adjustment that is recorded as a component of Other Comprehensive Income. Foreign currency losses related to intangible assets were $<ix:nonFraction id="c75343680" contextRef="d_2021-01-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss" scale="6" format="ixt:numdotdecimal" decimals="-5" sign="-">0.4</ix:nonFraction> million as of <em style="font: inherit;"> June 30, 2021. </em>There was <ix:nonFraction id="c75343681" contextRef="d_2020-01-01_2020-12-31" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss" scale="0" format="ixt-sec:numwordsen" decimals="-3">no</ix:nonFraction> foreign currency translation impact as of <em style="font: inherit;"> December 31, 2020. </em>Amortization expense for intangible assets was $<ix:nonFraction id="c75343682" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:AmortizationOfIntangibleAssets" scale="6" format="ixt:numdotdecimal" decimals="-5">1.5</ix:nonFraction> million and $<ix:nonFraction id="c75343683" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:AmortizationOfIntangibleAssets" scale="6" format="ixt:numdotdecimal" decimals="-5">0.8</ix:nonFraction>&#xa0;million for the <em style="font: inherit;">three</em> months ended&#xa0;<em style="font: inherit;"> June 30, 2021 </em>and <em style="font: inherit;">2020</em>, respectively, and $<ix:nonFraction id="c75343686" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:AmortizationOfIntangibleAssets" scale="6" format="ixt:numdotdecimal" decimals="-6">3.0</ix:nonFraction> million and $<ix:nonFraction id="c75343687" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:AmortizationOfIntangibleAssets" scale="6" format="ixt:numdotdecimal" decimals="-5">1.5</ix:nonFraction> million for the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021 </em>and <em style="font: inherit;">2020,</em> respectively.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets and current exchange rates is as follows:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" id="c1904970" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 83%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="padding: 0px; width: 0%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Estimated Amortization Expense</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Remaining 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343793" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear" scale="3" format="ixt:numdotdecimal" decimals="-4">3,130</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">2022</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343794" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" scale="3" format="ixt:numdotdecimal" decimals="-3">6,259</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">2023</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343795" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" scale="3" format="ixt:numdotdecimal" decimals="-3">6,056</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">2024</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343796" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" scale="3" format="ixt:numdotdecimal" decimals="-3">3,832</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">2025</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343797" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" scale="3" format="ixt:numdotdecimal" decimals="-4">3,750</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Thereafter</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343798" contextRef="i_2021-06-30" unitRef="USD" name="prlb:FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour" scale="3" format="ixt:numdotdecimal" decimals="-3">18,647</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total estimated amortization expense</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343799" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" format="ixt:numdotdecimal" decimals="-3">41,674</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p><ix:exclude><p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></p>
   <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
    <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     <em style="font: inherit;">8</em>
    </div>
    <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
    <div class="PGHDR" style="width: 100%; text-align: left;">
     <div class="hf-row">
      <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
     </div>
    </div>
   </div>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p></ix:exclude><ix:exclude></ix:exclude>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:FairValueDisclosuresTextBlock" id="c1904971" escape="true">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">6</em> &#x2013; Fair Value Measurements</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Accounting Standards Codification, <i>Fair Value Measuremen</i>t (ASC <em style="font: inherit;">820</em>), defines fair value as the exchange price that would be received for an asset or paid to transfer a liability (an exit price) in the principal or most advantageous market for the asset or liability in an orderly transaction between market participants on the measurement date. ASC <em style="font: inherit;">820</em> also establishes a fair value hierarchy that requires classification based on observable and unobservable inputs when measuring fair value. There are <em style="font: inherit;">three</em> levels of inputs that <em style="font: inherit;"> may </em>be used to measure fair value:</p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Level </i><em style="font: inherit;">1&#x2014;Quoted</em> prices in active markets for identical assets or liabilities.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Level </i><em style="font: inherit;">2&#x2014;Observable</em> inputs other than Level <em style="font: inherit;">1</em> prices such as quoted prices for similar assets or liabilities; quoted prices in markets that are <em style="font: inherit;">not</em> active; or other inputs that are observable or can be corroborated by observable market data for substantially the full term of the assets or liabilities.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Level </i><em style="font: inherit;">3&#x2014;Unobservable</em> inputs that are supported by little or <em style="font: inherit;">no</em> market activity and that are significant to the fair value of the assets or liabilities.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company's assets and liabilities that are required to be measured or disclosed at fair value on a recurring basis include cash and cash equivalents, marketable securities and contingent consideration. The Company&#x2019;s cash consists of bank deposits. The Company&#x2019;s cash equivalents measured at fair value consist of money market mutual funds. The Company determines the fair value of these investments using Level <em style="font: inherit;">1</em> inputs. The Company's marketable securities consist of&#xa0;short-term and long-term agency, municipal, corporate and other debt securities. Fair value for the corporate debt securities is primarily determined based on quoted market prices (Level <em style="font: inherit;">1</em>). Fair values for the U.S. municipal securities, U.S. government agency securities, certificates of deposit and U.S. treasury securities are primarily determined using dealer quotes or quoted market prices for similar securities (Level <em style="font: inherit;">2</em>). The Company's contingent consideration is the current fair value estimate of amounts owed to the former shareholders of Hubs and is determined using the Monte Carlo pricing model (Level <em style="font: inherit;">3</em>).</p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following table summarizes financial assets as of&#xa0;<em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;"> December 31, 2020</em> measured at fair value on a recurring basis:&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock" id="c1904972" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">June 30, 2021</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2020</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 40%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 1</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 2</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 3</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 1</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 2</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 3</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Financial Assets:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Cash and cash equivalents</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343835" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:CashAndCashEquivalentsFairValueDisclosure" scale="3" format="ixt:numdotdecimal" decimals="-3">40,694</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343836" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:CashAndCashEquivalentsFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343837" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:CashAndCashEquivalentsFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343838" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:CashAndCashEquivalentsFairValueDisclosure" scale="3" format="ixt:numdotdecimal" decimals="-3">72,225</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343839" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:CashAndCashEquivalentsFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343840" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:CashAndCashEquivalentsFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Money market mutual fund</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343841" contextRef="i_2021-06-30_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:CashAndCashEquivalentsFairValueDisclosure" scale="3" format="ixt:numdotdecimal" decimals="-3">1,215</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343842" contextRef="i_2021-06-30_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:CashAndCashEquivalentsFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343843" contextRef="i_2021-06-30_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:CashAndCashEquivalentsFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343844" contextRef="i_2020-12-31_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:CashAndCashEquivalentsFairValueDisclosure" scale="3" format="ixt:numdotdecimal" decimals="-3">55,378</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343845" contextRef="i_2020-12-31_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:CashAndCashEquivalentsFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343846" contextRef="i_2020-12-31_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:CashAndCashEquivalentsFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343847" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">17,951</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343848" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" format="ixt:numdotdecimal" decimals="-4">29,090</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343849" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343850" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343851" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343852" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343853" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:numdotdecimal" decimals="-4">59,860</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343854" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:numdotdecimal" decimals="-4">29,090</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343855" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343856" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:numdotdecimal" decimals="-3">127,603</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343857" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343858" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:AssetsFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt"><b>Financial Liabilities:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-indent: 9pt;"> <p style="margin-top: 0pt; margin-bottom: 0pt">Contingent consideration</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343860" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationLiability" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343861" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationLiability" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343862" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationLiability" scale="3" format="ixt:numdotdecimal" decimals="-3">5,629</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343863" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationLiability" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343864" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationLiability" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75343865" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:BusinessCombinationContingentConsiderationLiability" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343866" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:LiabilitiesFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343867" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:LiabilitiesFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343868" contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:LiabilitiesFairValueDisclosure" scale="3" format="ixt:numdotdecimal" decimals="-3">5,629</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343869" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:LiabilitiesFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343870" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:LiabilitiesFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75343871" contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember" unitRef="USD" name="us-gaap:LiabilitiesFairValueDisclosure" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">In the <em style="font: inherit;">first</em> quarter of <em style="font: inherit;">2021,</em> the Company sold held-to-maturity securities in order to partially fund the acquisition of Hubs. As a result of the sale, all remaining marketable securities were reclassified to available-for-sale securities and reported at fair value.</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">&#xa0;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">The Company recorded a contingent consideration liability at the acquisition date of Hubs representing the amounts payable to former shareholders, as outlined under the terms of the merger agreement, payable subject to the satisfaction of performance-based targets during fiscal year <em style="font: inherit;">2021</em> and fiscal year <em style="font: inherit;">2022,</em> consisting of up to $<ix:nonFraction id="c75343818" contextRef="d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember" unitRef="USD" name="us-gaap:PaymentsToAcquireBusinessesGross" scale="6" format="ixt:numdotdecimal" decimals="-6">25.0</ix:nonFraction> million in cash and up to <ix:nonFraction id="c75343819" contextRef="d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember" unitRef="Share" name="us-gaap:BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" scale="0" format="ixt:numdotdecimal" decimals="INF">143,983</ix:nonFraction> shares of the Company's common stock valued at $<ix:nonFraction id="c75343820" contextRef="d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember" unitRef="USD" name="us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" scale="6" format="ixt:numdotdecimal" decimals="-5">27.8</ix:nonFraction> million on the date of close. The fair value of the contingent consideration (Level <em style="font: inherit;">3</em>) is determined using a Monte Carlo pricing model. Subsequent changes in the fair value of the contingent consideration liabilities have been recorded in the Consolidated Statements of Comprehensive Income. Fluctuations due to foreign currency translation have been recorded in the Consolidated Statements of Shareholders&#x2019; Equity.</p>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:InvestmentTextBlock" id="c1904973" escape="true">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">7</em> &#x2013; Marketable Securities</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company invests in short-term and long-term agency, municipal, corporate and other debt securities. As of <em style="font: inherit;"> June 30, 2021 </em>the securities are categorized as available-for-sale and are recorded at fair value. As of <em style="font: inherit;"> December 31, 2020, </em>the securities were categorized as held-to-maturity and were recorded at amortized cost, net of an allowance for credit losses. The change in categorization was a result of the sale of securities in the <em style="font: inherit;">first</em> quarter of <em style="font: inherit;">2021</em> in order to partially fund the acquisition of Hubs and did <em style="font: inherit;">not</em> have a material impact on our financial statements. The following table summarizes information regarding the Company&#x2019;s short-term and long-term marketable securities as of&#xa0;<em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;"> December 31, 2020</em>:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock" id="c1A8819B9-F2E6-4ECB-B8DB-60507B9A62D9" escape="true" continuedAt="c223973D8-F2E4-46F6-924D-893647563F23">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">June 30, 2021</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 56%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Cost</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Unrealized Gains</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Unrealized Losses</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">U.S. municipal securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343892" contextRef="i_2021-06-30_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" format="ixt:numdotdecimal" decimals="-3">20,968</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343893" contextRef="i_2021-06-30_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" format="ixt:numdotdecimal" decimals="-3">43</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343894" contextRef="i_2021-06-30_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" format="ixt:numdotdecimal" decimals="-3">17</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343895" contextRef="i_2021-06-30_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">20,994</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Corporate debt securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343896" contextRef="i_2021-06-30_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" format="ixt:numdotdecimal" decimals="-3">19,062</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343897" contextRef="i_2021-06-30_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" format="ixt:numdotdecimal" decimals="-3">68</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343898" contextRef="i_2021-06-30_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" format="ixt:numdotdecimal" decimals="-3">29</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343899" contextRef="i_2021-06-30_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">19,101</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">U.S. government agency securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343900" contextRef="i_2021-06-30_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" format="ixt:numdotdecimal" decimals="-5">1,500</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343901" contextRef="i_2021-06-30_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75343902" contextRef="i_2021-06-30_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" format="ixt:numdotdecimal" decimals="-3">2</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343903" contextRef="i_2021-06-30_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">1,498</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Certificates of deposit/time deposits</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343904" contextRef="i_2021-06-30_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" format="ixt:numdotdecimal" decimals="-3">5,394</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343905" contextRef="i_2021-06-30_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" format="ixt:numdotdecimal" decimals="-3">54</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343906" contextRef="i_2021-06-30_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343907" contextRef="i_2021-06-30_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">5,448</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343908" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" format="ixt:numdotdecimal" decimals="-3">46,924</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343909" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" format="ixt:numdotdecimal" decimals="-3">165</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(<ix:nonFraction id="c75343910" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" format="ixt:numdotdecimal" decimals="-3">48</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343911" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">47,041</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p><ix:exclude><p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></p>
   <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
    <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     <em style="font: inherit;">9</em>
    </div>
    <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
    <div class="PGHDR" style="width: 100%; text-align: left;">
     <div class="hf-row">
      <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a></div></div></div></ix:exclude><ix:exclude><div class="PGHDR" style="width: 100%; text-align: left;"><div class="hf-row"><a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif"></a>
     </div>
    </div>
   </ix:exclude>
   <ix:exclude>&#xa0;</ix:exclude>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:continuation id="c223973D8-F2E4-46F6-924D-893647563F23">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2020</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 56%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Cost</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Unrealized Gains</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Unrealized Losses</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. municipal securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343920" contextRef="i_2020-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">25,003</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343921" contextRef="i_2020-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3" format="ixt:numdotdecimal" decimals="-3">83</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343922" contextRef="i_2020-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">2</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343923" contextRef="i_2020-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3" format="ixt:numdotdecimal" decimals="-3">25,084</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Corporate debt securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343924" contextRef="i_2020-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">42,048</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343925" contextRef="i_2020-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3" format="ixt:numdotdecimal" decimals="-3">211</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343926" contextRef="i_2020-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">11</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343927" contextRef="i_2020-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3" format="ixt:numdotdecimal" decimals="-3">42,248</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. government agency securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343928" contextRef="i_2020-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-5">18,500</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343929" contextRef="i_2020-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3" format="ixt:numdotdecimal" decimals="-3">6</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(<ix:nonFraction id="c75343930" contextRef="i_2020-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3" format="ixt:numdotdecimal" decimals="-4">10</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343931" contextRef="i_2020-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3" format="ixt:numdotdecimal" decimals="-3">18,496</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Certificates of deposit/time deposits</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343932" contextRef="i_2020-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">5,395</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343933" contextRef="i_2020-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3" format="ixt:numdotdecimal" decimals="-3">93</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343934" contextRef="i_2020-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343935" contextRef="i_2020-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3" format="ixt:numdotdecimal" decimals="-3">5,488</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Commercial paper</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343936" contextRef="i_2020-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">2,499</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343937" contextRef="i_2020-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343938" contextRef="i_2020-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"><ix:nonFraction id="c75343939" contextRef="i_2020-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3" format="ixt:numdotdecimal" decimals="-3">2,499</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343940" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:HeldToMaturitySecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">93,445</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343941" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" scale="3" format="ixt:numdotdecimal" decimals="-3">393</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(<ix:nonFraction id="c75343942" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">23</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343943" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:HeldToMaturitySecuritiesFairValue" scale="3" format="ixt:numdotdecimal" decimals="-3">93,815</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td></tr>
</tbody></table>
   </ix:continuation>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Fair values for the corporate debt securities are primarily determined based on quoted market prices (Level <em style="font: inherit;">1</em>). Fair values for the U.S. municipal securities, U.S. government agency securities, certificates of deposit and U.S. treasury securities are primarily determined using dealer quotes or quoted market prices for similar securities (Level <em style="font: inherit;">2</em>).</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">During the <em style="font: inherit;">first</em> quarter of <em style="font: inherit;">2020,</em> the Company adopted the FASB ASU <em style="font: inherit;">2016</em>-<em style="font: inherit;">13,</em> <i>Financial Instruments &#x2013; Credit Losses.</i> The Company calculated the expected credit loss for each security in its portfolio using the probability-of-default method. The Company concluded the adoption of the guidance had <em style="font: inherit;">no</em> material impact on its consolidated financial statements.&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Classification of marketable securities as current or non-current is based upon the security&#x2019;s maturity date as of the date of these financial statements.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The&#xa0;<em style="font: inherit;"> June 30, 2021</em> balance of available-for-sale debt securities by contractual maturity is shown in the following table at fair value. Actual maturities <em style="font: inherit;"> may </em>differ from contractual maturities because the issuers of the securities <em style="font: inherit;"> may </em>have the right to prepay obligations without prepayment penalties.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock" id="c1904976" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">June 30,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Due in one year or less</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75343946" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue" scale="3" format="ixt:numdotdecimal" decimals="-3">18,341</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Due after one year through five years</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"><ix:nonFraction id="c75343947" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue" scale="3" format="ixt:numdotdecimal" decimals="-5">28,700</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343948" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" format="ixt:numdotdecimal" decimals="-3">47,041</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  </ix:nonNumeric>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:InventoryDisclosureTextBlock" id="c1904977" escape="true">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">8</em> &#x2013; Inventory </b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Inventory consists primarily of raw materials, which are recorded at the lower of cost or market using the standard cost method, which approximates <em style="font: inherit;">first</em>-in, <em style="font: inherit;">first</em>-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company&#x2019;s inventory consisted of the following as of the dates indicated:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:ScheduleOfInventoryCurrentTableTextBlock" id="c1904978" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 977px;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">June 30,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">December 31,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 977px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 977px; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Total inventory</p> </td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343957" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:InventoryGross" scale="3" format="ixt:numdotdecimal" decimals="-3">9,395</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75343958" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:InventoryGross" scale="3" format="ixt:numdotdecimal" decimals="-3">11,122</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 977px; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Allowance for obsolescence</p> </td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343959" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:InventoryValuationReserves" scale="3" format="ixt:numdotdecimal" decimals="-3">284</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c75343960" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:InventoryValuationReserves" scale="3" format="ixt:numdotdecimal" decimals="-4">260</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 977px;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Inventory, net of allowance</p> </td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343961" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:InventoryNet" scale="3" format="ixt:numdotdecimal" decimals="-3">9,111</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75343962" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:InventoryNet" scale="3" format="ixt:numdotdecimal" decimals="-3">10,862</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p><ix:exclude><p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></p>
   <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
    <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     <em style="font: inherit;">10</em>
    </div>
    <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
    <div class="PGHDR" style="width: 100%; text-align: left;">
     <div class="hf-row">
      <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
     </div>
    </div>
   </div>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p></ix:exclude><ix:exclude></ix:exclude>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" id="c1904979" escape="true">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">9</em> &#x2013; Stock-Based Compensation</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Under the Company&#x2019;s <em style="font: inherit;">2012</em> Long-Term Incentive Plan, as amended (the <em style="font: inherit;">2012</em> Plan), the Company has the ability to grant stock options, stock appreciation rights (SARs), restricted stock, restricted stock units, other stock-based awards and cash incentive awards. Awards under the <em style="font: inherit;">2012</em> Plan have a maximum term of <span style="-sec-ix-hidden:c75343967">ten</span> years from the date of grant. The compensation committee <em style="font: inherit;"> may </em>provide that the vesting or payment of any award will be subject to the attainment of specified performance measures in addition to the satisfaction of any continued service requirements and the compensation committee will determine whether such measures have been achieved. The per-share exercise price of stock options and SARs granted under the <em style="font: inherit;">2012</em> Plan generally <em style="font: inherit;"> may </em><em style="font: inherit;">not</em> be less than the fair market value of a share of our common stock on the date of the grant.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Employee Stock Purchase Plan</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company&#x2019;s <em style="font: inherit;">2012</em> Employee Stock Purchase Plan (ESPP) allows eligible employees to purchase a variable number of shares of the Company&#x2019;s common stock each offering period at a discount through payroll deductions of up to <ix:nonFraction id="c75343971" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-ESPPMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" scale="-2" format="ixt:numdotdecimal" decimals="2">15</ix:nonFraction> percent of their eligible compensation, subject to plan limitations. The ESPP provides for <span style="-sec-ix-hidden:c75343972">six</span>-month offering periods with a single purchase period ending <em style="font: inherit;"> May&#xa0;</em><em style="font: inherit;">15</em> and <em style="font: inherit;"> November&#xa0;</em><em style="font: inherit;">15,</em> respectively. At the end of each offering period, employees are able to purchase shares at <ix:nonFraction id="c75343975" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-ESPPMember" unitRef="Pure" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" scale="-2" format="ixt:numdotdecimal" decimals="2">85</ix:nonFraction> percent of the lower of the fair market value of the Company&#x2019;s common stock on the <em style="font: inherit;">first</em> trading day of the offering period or on the last trading day of the offering period.</p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Stock-Based Compensation Expense</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Stock-based compensation expense was $<ix:nonFraction id="c75343977" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="6" format="ixt:numdotdecimal" decimals="-5">4.9</ix:nonFraction> million and $<ix:nonFraction id="c75343978" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="6" format="ixt:numdotdecimal" decimals="-5">3.6</ix:nonFraction>&#xa0;million for the <em style="font: inherit;">three</em> months ended&#xa0;<em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;">2020</em>, respectively, and $<ix:nonFraction id="c75343981" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="6" format="ixt:numdotdecimal" decimals="-5">10.6</ix:nonFraction> million and $<ix:nonFraction id="c75343982" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="6" format="ixt:numdotdecimal" decimals="-5">6.7</ix:nonFraction> million for the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021 </em>and <em style="font: inherit;">2020,</em> respectively.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Stock Options</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following table summarizes stock option activity during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em>:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" id="c1904980" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Weighted-</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Average</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Stock Options</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Exercise Price</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at December 31, 2020</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75344039" contextRef="i_2020-12-31" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">229,531</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75344040" contextRef="i_2020-12-31" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">86.46</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Granted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344041" contextRef="d_2021-01-01_2021-06-30" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" scale="0" format="ixt:numdotdecimal" decimals="INF">57,901</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344042" contextRef="d_2021-01-01_2021-06-30" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">128.14</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Exercised</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75344043" contextRef="d_2021-01-01_2021-06-30" unitRef="Share" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" scale="0" format="ixt:numdotdecimal" decimals="INF">28,991</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344044" contextRef="d_2021-01-01_2021-06-30" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">58.78</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Forfeited</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(<ix:nonFraction id="c75344045" contextRef="d_2021-01-01_2021-06-30" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">8,547</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344046" contextRef="d_2021-01-01_2021-06-30" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">101.65</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Options outstanding at June 30, 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"><ix:nonFraction id="c75344047" contextRef="i_2021-06-30" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">249,894</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344048" contextRef="i_2021-06-30" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">98.81</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td><td>&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Exercisable at June 30, 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"><ix:nonFraction id="c75344049" contextRef="i_2021-06-30" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">116,452</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344050" contextRef="i_2021-06-30" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" scale="0" format="ixt:numdotdecimal" decimals="INF">81.38</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The outstanding options generally have a term of <span style="-sec-ix-hidden:c75343986">ten</span> years. For employees, options granted become exercisable ratably over the vesting period, which is generally a period from <span style="-sec-ix-hidden:c75343987">four</span> to <span style="-sec-ix-hidden:c75343988">five</span> years, beginning on the <em style="font: inherit;">first</em> anniversary of the grant date, subject to the employee&#x2019;s continuing service to the Company. For the board of directors, options generally become exercisable in full on the <em style="font: inherit;">first</em> anniversary of the grant date.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The weighted-average grant date fair value of options that were granted during the&#xa0;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> was $<ix:nonFraction id="c75343992" contextRef="d_2021-01-01_2021-06-30" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">57.26</ix:nonFraction>.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following table provides the assumptions used in the Black-Scholes pricing model valuation of options during the&#xa0;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;">2020</em>:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" id="c1904981" escape="true">
    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr style="vertical-align: bottom; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><b>Six Months Ended June 30,</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td></tr>
<tr style="vertical-align: bottom; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><b>2021</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><b>2020</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#xa0;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344051" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="3">0.80</ix:nonFraction> - <ix:nonFraction id="c75344053" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">1.12</ix:nonFraction>%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344054" contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="3">0.50</ix:nonFraction> - <ix:nonFraction id="c75344056" contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">1.47</ix:nonFraction>%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected life (years)</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c75344058" format="ixt-sec:duryear">6.25</ix:nonNumeric></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c75344061" format="ixt-sec:duryear">6.25</ix:nonNumeric></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344063" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">45.28</ix:nonFraction> - <ix:nonFraction id="c75344065" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">45.53</ix:nonFraction>%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344066" contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="3">42.40</ix:nonFraction> - <ix:nonFraction id="c75344068" contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">43.83</ix:nonFraction>%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344070" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction>%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344073" contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction>%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">As of <em style="font: inherit;"> June 30, 2021</em>, there was $<ix:nonFraction id="c75343995" contextRef="i_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember" unitRef="USD" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" scale="6" format="ixt:numdotdecimal" decimals="-5">5.8</ix:nonFraction> million of unrecognized compensation expense related to unvested stock options, which is expected to be recognized over a weighted-average period of <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" id="c75343996" format="ixt-sec:duryear">3.0</ix:nonNumeric>&#xa0;years.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p><ix:exclude><p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></p>
   <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
    <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
     <em style="font: inherit;">11</em>
    </div>
    <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
    <div class="PGHDR" style="width: 100%; text-align: left;">
     <div class="hf-row">
      <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
     </div>
    </div>
   </div>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p></ix:exclude><ix:exclude></ix:exclude>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Restricted Stock </b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Restricted stock awards&#xa0;are share-settled awards and restrictions lapse ratably over the vesting period, which is generally a period from <span style="-sec-ix-hidden:c75343998">three</span> to <span style="-sec-ix-hidden:c75343999">five</span> years, beginning on the <em style="font: inherit;">first</em> anniversary of the grant date, subject to the employee's continuing service to the Company. For the board of directors, restrictions generally lapse in full on the <em style="font: inherit;">first</em> anniversary of the grant date.&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following table summarizes restricted stock activity during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em>:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" id="c1904982" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Weighted-</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Average</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Grant Date</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Restricted</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Stock</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Per Share</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at December 31, 2020</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75344085" contextRef="i_2020-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">307,199</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75344086" contextRef="i_2020-12-31_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">98.87</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Granted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344087" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">178,398</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344088" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">133.67</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Restrictions lapsed</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75344089" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">113,315</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344090" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">91.10</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Forfeited</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(<ix:nonFraction id="c75344091" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">14,525</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344092" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">105.72</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Restricted stock at June 30, 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"><ix:nonFraction id="c75344093" contextRef="i_2021-06-30_AwardTypeAxis-RestrictedStockMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="0" format="ixt:numdotdecimal" decimals="INF">357,757</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344094" contextRef="i_2021-06-30_AwardTypeAxis-RestrictedStockMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">118.41</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">As of <em style="font: inherit;"> June 30, 2021</em>, there was $<ix:nonFraction id="c75344003" contextRef="i_2021-06-30_AwardTypeAxis-RestrictedStockMember" unitRef="USD" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" scale="6" format="ixt:numdotdecimal" decimals="-6">36.0</ix:nonFraction> million of unrecognized compensation expense related to non-vested restricted stock, which is expected to be recognized over a weighted-average period of <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" id="c75344004" format="ixt-sec:duryear">2.8</ix:nonNumeric>&#xa0;years.&#xa0;</p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:exclude>
    <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
     <em style="font: inherit;"></em></div></ix:exclude><ix:exclude><div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;"><div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;"><em style="font: inherit;">12</em>
    </div>
    <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
    <div class="PGHDR" style="width: 100%; text-align: left;">
     <div class="hf-row">
      <div class="TOCLink hf-cell" style="width: 100%; display: inline-block; text-align: left;">
       <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
      </div>
     </div>
    </div>
   </div>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p></ix:exclude><ix:exclude></ix:exclude>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Performance Stock </b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Performance stock units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between <span style="-sec-ix-hidden:c75344006">0</span> percent&#xa0;and <ix:nonFraction id="c75344007" contextRef="i_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" scale="-2" format="ixt:numdotdecimal" decimals="1">150</ix:nonFraction> percent&#xa0;of that target number capable of being earned and vesting at the end of a <span style="-sec-ix-hidden:c75344008">three</span>-year performance period depending on the Company&#x2019;s performance in the final year of the performance period and the award recipient&#x2019;s continued employment. The Company&#x2019;s PSUs granted from <em style="font: inherit;">2017</em> to <em style="font: inherit;">2019</em> and certain PSUs granted in <em style="font: inherit;">2021</em> are based on performance conditions and the related compensation cost is based on the probability that the performance conditions will be achieved. The Company&#x2019;s PSUs granted in <em style="font: inherit;">2020</em> and certain PSUs granted in <em style="font: inherit;">2021</em>&#xa0;are based on market conditions and the related compensation cost is based on the fair value at grant date calculated using a Monte Carlo pricing model.</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following table summarizes performance stock activity during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em>:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" id="c1904983" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Weighted-</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Average</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#xa0;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Grant Date</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Performance</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Stock</em></b></p> </td><td style="padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Per Share</em></b></p> </td><td style="padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at December 31, 2020</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75344105" contextRef="i_2020-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0" format="ixt:numdotdecimal" decimals="INF">19,956</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75344106" contextRef="i_2020-12-31_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">118.66</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Granted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344107" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">15,078</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344108" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">203.64</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="margin: 0px; padding-left: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-indent: -9pt;">Restrictions lapsed</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75344109" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="0" format="ixt:zerodash" decimals="INF" sign="-">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75344110" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0" format="ixt:zerodash" decimals="INF">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="margin: 0px; padding-left: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-indent: -9pt;">Performance change</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75344111" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" scale="0" format="ixt:zerodash" decimals="INF">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75344112" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" scale="0" format="ixt:zerodash" decimals="INF">-</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="margin: 0px; padding-left: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin: 0pt 0pt 0pt 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-indent: -18pt;">Forfeited</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(<ix:nonFraction id="c75344113" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" scale="0" format="ixt:numdotdecimal" decimals="INF">4,184</ix:nonFraction></td><td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"><ix:nonFraction id="c75344114" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">99.59</ix:nonFraction></td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Performance stock at June 30, 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#xa0;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"><ix:nonFraction id="c75344115" contextRef="i_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="Share" name="us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" scale="0" format="ixt:numdotdecimal" decimals="INF">30,850</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344116" contextRef="i_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="USDPerShare" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" format="ixt:numdotdecimal" decimals="INF">160.19</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 7.2pt; text-align: left; text-indent: -9pt;">The following table provides the assumptions used in the Monte Carlo pricing model valuation of PSUs during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;">2020</em>:&#xa0;</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
   <hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 6pt auto 0pt auto;" />
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="prlb:ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" id="c1904984" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344121" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">0.22</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344122" contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">1.41</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected life (years)</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c75344123" format="ixt-sec:duryear">2.87</ix:nonNumeric></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-PerformanceSharesMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c75344124" format="ixt-sec:duryear">2.88</ix:nonNumeric></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344125" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="3">51.40</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344126" contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="3">38.70</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344127" contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344128" contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0pt auto 0pt auto;" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">As of <em style="font: inherit;"> June 30, 2021</em>, there was $<ix:nonFraction id="c75344017" contextRef="i_2021-06-30_AwardTypeAxis-PerformanceSharesMember" unitRef="USD" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" scale="6" format="ixt:numdotdecimal" decimals="-5">3.2</ix:nonFraction> million of unrecognized compensation expense related to non-vested performance stock, which is expected to be recognized over a weighted-average period of <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" id="c75344018" format="ixt-sec:duryear">2.4</ix:nonNumeric>&#xa0;years.&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Employee Stock Purchase Plan</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following table presents the assumptions used to estimate the fair value of the ESPP during the&#xa0;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;">2020</em>:&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" id="c1904985" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr style="vertical-align: bottom;"><td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><b><b>Six Months Ended June 30,</b></b></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td></tr>
<tr style="vertical-align: bottom;"><td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><b><b>2021</b></b></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><b><b>2020</b></b></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: Times New Roman; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344129" contextRef="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">0.06</ix:nonFraction> - <ix:nonFraction id="c75344131" contextRef="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">0.12</ix:nonFraction>%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344132" contextRef="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">0.17</ix:nonFraction> - <ix:nonFraction id="c75344134" contextRef="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" format="ixt:numdotdecimal" decimals="4">1.59</ix:nonFraction>%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected life (months)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c75344136" format="ixt-sec:durmonth">6.00</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonNumeric contextRef="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="c75344139" format="ixt-sec:durmonth">6.00</ix:nonNumeric></td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344141" contextRef="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">50.85</ix:nonFraction> - <ix:nonFraction id="c75344143" contextRef="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">65.53</ix:nonFraction>%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344144" contextRef="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MinimumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">42.63</ix:nonFraction> - <ix:nonFraction id="c75344146" contextRef="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MaximumMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" format="ixt:numdotdecimal" decimals="4">59.99</ix:nonFraction>%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344148" contextRef="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction>%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#xa0;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"><ix:nonFraction id="c75344151" contextRef="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember" unitRef="Pure" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2" format="ixt:numdotdecimal" decimals="-3">0</ix:nonFraction>%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p><ix:exclude><p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></p>
   <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
    <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
     <em style="font: inherit;">13</em>
    </div>
    <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
    <div class="PGHDR" style="width: 100%; text-align: left;">
     <div class="hf-row">
      <div class="TOCLink hf-cell" style="width: 100%; display: inline-block; text-align: left;">
       <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
      </div>
     </div>
    </div>
   </div>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p></ix:exclude><ix:exclude></ix:exclude>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:DisclosureOfReclassificationAmountTextBlock" id="c1904986" escape="true">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;<b>Note <em style="font: inherit;">10</em> &#x2013; Accumulated Other Comprehensive Income (Loss)</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Other comprehensive income (loss) is comprised of foreign currency translation adjustments and net unrealized gains (losses) on investments in securities. The following table presents the changes in accumulated other comprehensive income (loss) balances during the&#xa0;<em style="font: inherit;">three</em> and <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;">2020</em>:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock" id="c1904987" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 0pt;">Balance at beginning of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75344169" contextRef="i_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">10,096</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75344171" contextRef="i_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">9,998</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75344173" contextRef="i_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-4" sign="-">3,420</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75344175" contextRef="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">7,018</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-indent: 9pt;"><i>Foreign currency translation adjustments</i></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#xa0;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#xa0;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#xa0;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#xa0;</i></td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;">Other comprehensive income (loss) before reclassifications</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344178" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:numdotdecimal" decimals="-4">2,030</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344179" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:numdotdecimal" decimals="-3">364</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75344180" contextRef="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">4,812</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75344181" contextRef="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">2,616</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: 9pt;">Amounts reclassified from accumulated other comprehensive loss</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75344182" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75344183" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75344184" contextRef="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75344185" contextRef="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: 9pt;">Net current-period other comprehensive income (loss)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75344186" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:numdotdecimal" decimals="-4">2,030</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75344187" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:numdotdecimal" decimals="-3">364</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c75344188" contextRef="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">4,812</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c75344189" contextRef="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">2,616</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-indent: 9pt;"><i>Net unrealized gains (losses) on investments in securities</i></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#xa0;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#xa0;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#xa0;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#xa0;</i></td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;">Other comprehensive income (loss) before reclassifications</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(<ix:nonFraction id="c75344192" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">49</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344194" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344196" contextRef="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:numdotdecimal" decimals="-3">117</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344198" contextRef="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember" unitRef="USD" name="us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: 9pt;">Amounts reclassified from accumulated other comprehensive loss</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75344199" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75344200" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75344201" contextRef="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75344202" contextRef="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember" unitRef="USD" name="us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" scale="3" format="ixt:zerodash" decimals="-3" sign="-">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: 9pt;">Net current-period other comprehensive income (loss)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(<ix:nonFraction id="c75344203" contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">49</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75344204" contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75344205" contextRef="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:numdotdecimal" decimals="-3">117</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><ix:nonFraction id="c75344206" contextRef="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember" unitRef="USD" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" format="ixt:zerodash" decimals="-3">-</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Balance at end of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c75344207" contextRef="i_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">8,115</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c75344208" contextRef="i_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">9,634</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c75344209" contextRef="i_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">8,115</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(<ix:nonFraction id="c75344210" contextRef="i_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember" unitRef="USD" name="us-gaap:StockholdersEquity" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">9,634</ix:nonFraction></td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
      </tr>

     </tbody>
    </table>
   </ix:nonNumeric>
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  </ix:nonNumeric>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:IncomeTaxDisclosureTextBlock" id="c1904988" escape="true">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">11</em> &#x2013; Income Taxes</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company is subject to income tax in multiple jurisdictions and the use of estimates is required to determine the provision for income taxes. For the <em style="font: inherit;">three</em> months ended&#xa0;<em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;">2020</em>, the Company recorded an income tax provision of $<ix:nonFraction id="c75344214" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="6" format="ixt:numdotdecimal" decimals="-5">3.3</ix:nonFraction> million and $<ix:nonFraction id="c75344215" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:IncomeTaxExpenseBenefit" scale="6" format="ixt:numdotdecimal" decimals="-5">2.5</ix:nonFraction>&#xa0;million, respectively.&#xa0;The income tax provision is based on the estimated annual effective tax rate for the year applied to pre-tax income. The results for the <em style="font: inherit;">three</em> and <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021 </em>reflect losses in jurisdictions that are <em style="font: inherit;">not</em> eligible for tax benefits on account of valuation allowances. The effective income tax rate for the <em style="font: inherit;">three</em> months ended&#xa0;<em style="font: inherit;"> June 30, 2021</em> was <ix:nonFraction id="c75344220" contextRef="d_2021-04-01_2021-06-30" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:numdotdecimal" decimals="3">20.5</ix:nonFraction> percent compared to <ix:nonFraction id="c75344221" contextRef="d_2020-04-01_2020-06-30" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:numdotdecimal" decimals="3">16.6</ix:nonFraction>&#xa0;percent in the same period of the prior year. The effective tax rate increased by <ix:nonFraction id="c75344222" contextRef="d_2021-04-01_2021-06-30" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" scale="-2" format="ixt:numdotdecimal" decimals="3">3.9</ix:nonFraction> percent&#xa0;for the <em style="font: inherit;">three</em> months ended&#xa0;<em style="font: inherit;"> June 30, 2021</em> when compared to the same period in&#xa0;<em style="font: inherit;">2020</em>, primarily due to a decrease in tax benefits from the vesting of restricted stock and the exercise of stock options. The effective income tax rate for the <em style="font: inherit;">six</em>&#xa0;months ended&#xa0;<em style="font: inherit;"> June 30, 2021</em> was <ix:nonFraction id="c75344226" contextRef="d_2021-01-01_2021-06-30" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:numdotdecimal" decimals="3">17.6</ix:nonFraction> percent compared to <ix:nonFraction id="c75344227" contextRef="d_2020-01-01_2020-06-30" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" format="ixt:numdotdecimal" decimals="3">19.4</ix:nonFraction>&#xa0;percent in the same period of the prior year. The effective tax rate decreased by <ix:nonFraction id="c75344228" contextRef="d_2021-01-01_2021-06-30" unitRef="Pure" name="prlb:EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" scale="-2" format="ixt:numdotdecimal" decimals="3" sign="-">1.8</ix:nonFraction> percent&#xa0;for the <em style="font: inherit;">six</em>&#xa0;months ended&#xa0;<em style="font: inherit;"> June 30, 2021</em> when compared to the same period in&#xa0;<em style="font: inherit;">2020</em>, primarily due to an increase in tax benefits from the vesting of restricted stock and the exercise of stock options.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The effective income tax rate for the&#xa0;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> differs from the U.S. federal statutory rate of <ix:nonFraction id="c75344232" contextRef="d_2021-01-01_2021-06-30" unitRef="Pure" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" format="ixt:numdotdecimal" decimals="2">21.0</ix:nonFraction> percent due to various factors, including operating in multiple state and foreign jurisdictions and tax credits for which the Company qualifies.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company had unrecognized tax benefits totaling $<ix:nonFraction id="c75344233" contextRef="i_2021-06-30" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefits" scale="6" format="ixt:numdotdecimal" decimals="-6">5.0</ix:nonFraction> million as of <em style="font: inherit;"> June 30, 2021</em> and $<ix:nonFraction id="c75344234" contextRef="i_2020-12-31" unitRef="USD" name="us-gaap:UnrecognizedTaxBenefits" scale="6" format="ixt:numdotdecimal" decimals="-5">4.8</ix:nonFraction>&#xa0;million as of&#xa0;<em style="font: inherit;"> December 31, 2020</em>, respectively, all of which, if recognized, would affect the Company&#x2019;s effective tax rate. The Company recognizes interest and penalties related to income tax matters in income tax expense, and reports the liability in current or long-term income taxes payable as appropriate.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">On <em style="font: inherit;"> March 11, 2021, </em>the President signed into law the ARP Act, a legislative package which is generally <em style="font: inherit;">not</em> significant to the Company's current tax footprint; however, the Company will continue to assess the ARP Act on an ongoing basis. Similar tax provisions and other stimulus measures have been granted either before or after <em style="font: inherit;"> June 30, 2021 </em>by certain foreign and U.S. state jurisdictions, which the Company continues to evaluate and apply, if applicable.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p><ix:exclude><p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"></p>
   <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
    <div class="PGNUM" style="width: 100%; text-align: center; font-size: 10pt; font-family: Times New Roman;">
     <em style="font: inherit;">14</em>
    </div>
    <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
    <div class="PGHDR" style="width: 100%; text-align: left;">
     <div class="hf-row">
      <div class="TOCLink hf-cell" style="width: 100%; display: inline-block; text-align: left;">
       <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
      </div>
     </div>
    </div>
   </div>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p></ix:exclude><ix:exclude></ix:exclude>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:SegmentReportingDisclosureTextBlock" id="c1904989" escape="true">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">12</em> &#x2013; Segment Reporting</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company&#x2019;s reportable segments are based on the internal reporting used by the Company&#x2019;s Chief Executive Officer, who is the chief operating decision maker (CODM), to assess operating performance and make decisions about the allocation of resources. The Corporate Unallocated and Japan category includes non-reportable segments, as well as research and development and general and administrative costs that the Company does <em style="font: inherit;">not</em> allocate directly to its operating segments.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Intercompany transactions primarily relate to intercontinental activity and have been eliminated and are excluded from the reported amounts. The difference between income from operations and pre-tax income relates to foreign currency-related gains and losses and interest income on cash balances and investments, which are <em style="font: inherit;">not</em> allocated to business segments.&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Revenue and income from operations by reportable segment&#xa0;for the&#xa0;<em style="font: inherit;">three</em> and <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> and&#xa0;<em style="font: inherit;">2020</em> were&#xa0;as follows:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember" name="us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock" id="c1904990" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Revenue:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">United States</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344264" contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">95,344</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344265" contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">86,823</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344266" contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">186,397</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344267" contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">176,899</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Europe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344268" contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">24,655</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344269" contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">16,729</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344270" contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">46,104</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344271" contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">37,516</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Japan</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"><ix:nonFraction id="c75344272" contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">3,049</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"><ix:nonFraction id="c75344273" contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">3,023</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"><ix:nonFraction id="c75344274" contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">6,673</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"><ix:nonFraction id="c75344275" contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">7,268</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Total revenue</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75344276" contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">123,048</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75344277" contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">106,575</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75344278" contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">239,174</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75344279" contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">221,683</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="prlb:IncomeFromOperationsByGeographicAreaTableTextBlock" id="c1904991" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 48%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Income from Operations:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">United States</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344289" contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-4">26,280</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344290" contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">24,349</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344291" contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">48,783</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344292" contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">49,438</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Europe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344293" contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">5,063</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344294" contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">2,261</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344295" contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">3,692</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344296" contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">6,625</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Corporate Unallocated and Japan</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(<ix:nonFraction id="c75344297" contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">15,239</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(<ix:nonFraction id="c75344298" contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">12,259</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(<ix:nonFraction id="c75344299" contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-4" sign="-">32,110</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(<ix:nonFraction id="c75344300" contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3" sign="-">24,887</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Total Income from Operations</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75344301" contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">16,104</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75344302" contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">14,351</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75344303" contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">20,365</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75344304" contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:OperatingIncomeLoss" scale="3" format="ixt:numdotdecimal" decimals="-3">31,176</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Total long-lived assets&#xa0;at&#xa0;<em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;"> December 31, 2020</em>&#xa0;were as follows:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:LongLivedAssetsByGeographicAreasTableTextBlock" id="c1904992" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">June 30,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">December 31,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 62%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Total long-lived assets:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">United States</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344310" contextRef="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">222,117</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344311" contextRef="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">215,721</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Europe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344312" contextRef="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-4">60,140</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344313" contextRef="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">59,388</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Japan</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"><ix:nonFraction id="c75344314" contextRef="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">6,238</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"><ix:nonFraction id="c75344315" contextRef="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">7,557</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt;">Total Long-lived Assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75344316" contextRef="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">288,495</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"><ix:nonFraction id="c75344317" contextRef="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember" unitRef="USD" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" format="ixt:numdotdecimal" decimals="-3">282,666</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Revenue by product line for the&#xa0;<em style="font: inherit;">three</em> and <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> and&#xa0;<em style="font: inherit;">2020</em> were&#xa0;as follows:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr class="hr-custom" style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0" />
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <ix:nonNumeric contextRef="d_2021-01-01_2021-06-30" name="us-gaap:DisaggregationOfRevenueTableTextBlock" id="c1904993" escape="true">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Revenue:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Injection Molding</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344327" contextRef="d_2021-04-01_2021-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">58,168</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344328" contextRef="d_2020-04-01_2020-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">57,894</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344329" contextRef="d_2021-01-01_2021-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">114,527</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344330" contextRef="d_2020-01-01_2020-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-4">112,670</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">CNC Machining</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344331" contextRef="d_2021-04-01_2021-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">41,592</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344332" contextRef="d_2020-04-01_2020-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-4">28,760</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344333" contextRef="d_2021-01-01_2021-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">78,295</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344334" contextRef="d_2020-01-01_2020-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">66,645</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">3D Printing</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344335" contextRef="d_2021-04-01_2021-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-4">18,170</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344336" contextRef="d_2020-04-01_2020-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">14,236</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344337" contextRef="d_2021-01-01_2021-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">35,405</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344338" contextRef="d_2020-01-01_2020-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">30,184</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Sheet Metal</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344339" contextRef="d_2021-04-01_2021-06-30_ProductOrServiceAxis-SheetMetalMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">4,717</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344340" contextRef="d_2020-04-01_2020-06-30_ProductOrServiceAxis-SheetMetalMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">4,669</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344341" contextRef="d_2021-01-01_2021-06-30_ProductOrServiceAxis-SheetMetalMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">9,936</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"><ix:nonFraction id="c75344342" contextRef="d_2020-01-01_2020-06-30_ProductOrServiceAxis-SheetMetalMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">10,318</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Other Revenue</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"><ix:nonFraction id="c75344343" contextRef="d_2021-04-01_2021-06-30_ProductOrServiceAxis-OtherProductsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">401</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"><ix:nonFraction id="c75344344" contextRef="d_2020-04-01_2020-06-30_ProductOrServiceAxis-OtherProductsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">1,016</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"><ix:nonFraction id="c75344345" contextRef="d_2021-01-01_2021-06-30_ProductOrServiceAxis-OtherProductsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">1,011</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"><ix:nonFraction id="c75344346" contextRef="d_2020-01-01_2020-06-30_ProductOrServiceAxis-OtherProductsMember" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">1,866</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Total revenue</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75344347" contextRef="d_2021-04-01_2021-06-30" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">123,048</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75344348" contextRef="d_2020-04-01_2020-06-30" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">106,575</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75344349" contextRef="d_2021-01-01_2021-06-30" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">239,174</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"><ix:nonFraction id="c75344350" contextRef="d_2020-01-01_2020-06-30" unitRef="USD" name="us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax" scale="3" format="ixt:numdotdecimal" decimals="-3">221,683</ix:nonFraction></td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td></tr>
</tbody></table>
   </ix:nonNumeric>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
   <hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0" />
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#xa0;</p><ix:exclude><p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"></p>
   <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
    <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     <em style="font: inherit;">15</em>
    </div>
    <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
    <div class="PGHDR" style="width: 100%; text-align: left;">
     <div class="hf-row">
      <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
     </div>
    </div>
   </div>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p></ix:exclude><ix:exclude></ix:exclude>
  </ix:nonNumeric>
  <div>
    &#xa0;
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="i2" title="i2" href="#"></a>Item 2. Management&#x2019;s Discussion and Analysis of Financial Condition and Results of Operations</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>The following discussion and analysis of our financial condition and results of operations should be read in conjunction with our unaudited consolidated financial statements and related notes appearing elsewhere in this Quarterly Report on Form 10-Q and our Annual Report on Form 10-K for the year ended December 31, 2020.</i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Forward-Looking Statements</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Statements contained in this report regarding matters that are not historical or current facts are &#x201c;forward-looking statements&#x201d; within the meaning of The Private Securities Litigation Reform Act of 1995. In some cases, you can identify forward-looking statements by the following words: &#x201c;may,&#x201d; &#x201c;will,&#x201d; &#x201c;could,&#x201d; &#x201c;would,&#x201d; &#x201c;should,&#x201d; &#x201c;expect,&#x201d; &#x201c;intend,&#x201d; &#x201c;plan,&#x201d; &#x201c;anticipate,&#x201d; &#x201c;believe,&#x201d; &#x201c;estimate,&#x201d; &#x201c;predict,&#x201d; &#x201c;project,&#x201d; &#x201c;potential,&#x201d; &#x201c;continue,&#x201d; &#x201c;ongoing&#x201d; or the negative of these terms or other comparable terminology, although not all forward-looking statements contain these words. These statements involve known and unknown risks, uncertainties and other factors that may cause our results to be materially different than those expressed or implied in such statements. Certain of these risk factors and others are described in Item 1A. &#x201c;Risk Factors&#x201d; of this Form 10-Q, as well as our most recent Annual Report on Form 10-K as filed with the Securities and Exchange Commission (SEC). Other unknown or unpredictable factors also could have material adverse effects on our future results. We cannot guarantee future results, levels of activity, performance or achievements. Accordingly, you should not place undue reliance on these forward-looking statements. Finally, we expressly disclaim any intent or obligation to update any forward-looking statements to reflect subsequent events or circumstances.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Overview</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">We are the world&#x2019;s largest and fastest digital manufacturer of custom prototypes and on-demand production parts. We manufacture prototypes and low-volume production parts for companies worldwide, who are under increasing pressure to bring their finished products to market faster than their competition. We utilize injection molding, computer numerical control (CNC) machining, 3D printing and sheet metal fabrication to manufacture custom parts for our customers. Our proprietary technology eliminates most of the time-consuming and expensive skilled labor conventionally required to quote and manufacture parts. In January 2021, we acquired Hubs, a leading online manufacturing platform based in Amsterdam, Netherlands, that provides customers with on-demand access to a global network of premium manufacturing partners. This acquisition creates the world's largest digital manufacturing platform, offering the broadest set of manufacturing services with the help of a global network of premium manufacturing providers. Our customers conduct nearly all of their business with us over the Internet. We target our products to the millions of product developers and engineers who use three-dimensional computer-aided design (3D CAD) software to design products across a diverse range of end-markets.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Our primary manufacturing product lines currently include Injection Molding, CNC Machining, 3D Printing and Sheet Metal. We continually seek to expand the range of sizes and geometric complexity of the parts we can make with these processes, to extend the variety of materials we are able to support and to identify additional manufacturing processes to which we can apply our technology in order to better serve the evolving preferences and needs of product developers and engineers. The acquisition of Hubs broadens our offer beyond our current manufacturing capabilities and provides a broader range of price and lead time options by leveraging a network of manufacturing partners to meet the holistic needs of our customers.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>&#xa0;</b></i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Injection Molding</b></i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Our Injection Molding product line uses our 3D CAD-to-CNC machining technology for the automated design and manufacture of molds, which are then used to produce custom plastic and liquid silicone rubber injection-molded parts and over-molded and insert-molded injection-molded parts on commercially available equipment. Our Injection Molding product line works best for on-demand production, bridge tooling, pilot runs and functional prototyping. Our affordable aluminum molds and quick turnaround times help reduce design risk and limit overall production costs for product developers and engineers. Because we retain possession of the molds, customers who need short-run production often come back to Protolabs&#x2019; Injection Molding product line for additional quantities. They do so to support pilot production for product testing, while their tooling for high-volume production is being prepared, because they need on-demand manufacturing due to disruptions in their manufacturing process, because their product requires limited annual quantity or because they need end-of-life production support. In 2017, we launched an on-demand manufacturing injection molding product offering.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>CNC Machining</b></i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Our CNC Machining product line uses commercially available CNC machines to offer milling and turning. CNC milling is a manufacturing process that cuts plastic and metal blocks into one or more custom parts based on the 3D CAD model uploaded by the product developer or engineer. CNC turning with live tooling combines both lathe and mill capabilities to machine parts with cylindrical features from metal rod stock. Our efficiencies derive from the automation of the programming of these machines and a proprietary fixturing process.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Quick-turn CNC machining works best for prototyping, form and fit testing, jigs and fixtures and functional components for end-use applications.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     16
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>3D Printing </b></i></p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Our 3D Printing product line includes stereolithography, selective laser sintering, direct metal laser sintering, Multi Jet Fusion, PolyJet and digital light synthesis processes, which offer customers a wide-variety of high-quality, precision rapid prototyping and low-volume production. These processes create parts with a high level of accuracy, detail, strength and durability. Industrial 3D Printing is best suited for functional prototypes, complex designs and end-use applications.</p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Sheet Metal</b></i></p>
  <p style="margin: 0pt; text-align: justify; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Our Sheet Metal product line includes quick-turn and e-commerce-enabled custom sheet metal parts,&#xa0;which provides&#xa0;customers with prototype and low-volume production parts. The rapid prototype sheet metal process is most often used when form, fit and function are all a priority. Our manufacturing process uses customer 3D CAD models uploaded by the product developer or engineer to fabricate quick-turn prototype sheet metal or short-run production parts.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Key Financial Measures and Trends</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Revenue</b></i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Our operations are comprised of three geographic operating segments in the United States, Europe and Japan. Revenue is derived from our Injection Molding, CNC Machining, 3D Printing and Sheet Metal product lines. Injection Molding revenue consists of sales of custom injection molds and injection-molded parts. CNC Machining revenue consists of sales of CNC-machined custom parts. 3D Printing revenue consists of sales of 3D-printed parts. Sheet Metal revenue consists of sales of fabricated sheet metal custom parts. Our historical and current efforts to increase revenue have been directed at expanding the breadth of our product offerings, gaining new customers and selling to our existing customer base by increasing marketing and selling activities, including:</p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">
   <tbody>
    <tr style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; vertical-align: top;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 27pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#x25cf;</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">expanding the breadth and scope of each of our product lines&#xa0;by adding more sizes and materials to our offerings;</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; vertical-align: top;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 27pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; vertical-align: top;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 27pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#x25cf;</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">the introduction of our 3D Printing product line through our acquisition of FineLine in 2014&#x37e;</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; vertical-align: top;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 27pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; vertical-align: top;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 27pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#x25cf;</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">expanding 3D Printing to Europe through our acquisition of Alphaform in October 2015&#x37e;</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; vertical-align: top;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 27pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; vertical-align: top;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 27pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#x25cf;</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">the introduction of our Sheet Metal product line through our acquisition of Rapid Manufacturing Group, LLC (RAPID) in 2017</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; vertical-align: top;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 27pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; vertical-align: top;">
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 27pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#x25cf;</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">continuously improving the usability of our product lines such as our web-centric applications&#x37e; and</p> </td>
    </tr>

    <tr>
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 27pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr>
     <td style="width: 18pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 27pt; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#x25cf;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">providing customers with on-demand access to a global network of premium manufacturing partners through our acquisition of Hubs in January 2021.</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt 14.7pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">During the three months ended June 30, 2021,&#xa0;we served 23,253 unique product developers and engineers who purchased our products through our web-based customer interface, an increase of 36.5% over the same period in 2020. The increase in product developers was driven primarily by our acquisition of Hubs. Excluding the impact of Hubs, our product developers increased 14.3% during the three months ended June 30, 2021 when compared to the same period in 2020. During the six&#xa0;months ended June 30, 2021,&#xa0;we served 37,501 unique product developers and engineers who purchased our products through our web-based customer interface, an increase of 26.3% over the same period in 2020. The increase in unique product developers served was driven primarily by our acquisition of Hubs. Excluding the impact of Hubs, unique product developers served increased 7.1% during the six&#xa0;months ended June 30, 2021 when compared to the same period in 2020. The economic uncertainty arising from the COVID-19 pandemic has impacted the number of product developers and engineers who purchase our products. While we expect the number of product developers and engineers served to grow in the long-term, challenges posed by the COVID-19 pandemic on the global economy have continued through the date of this report. At this time, it is difficult to predict the future given the current economic uncertainty and evolving market conditions.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Cost of Revenue, Gross Profit and Gross Margin</b></i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Cost of revenue consists primarily of raw materials, equipment depreciation, employee compensation, benefits, stock-based compensation, facilities costs, overhead allocations and outsourced manufacturing costs associated with the manufacturing process for molds and custom parts. We expect our personnel-related costs to increase in order to retain and attract top talent and remain competitive in the market. Overall, we expect cost of revenue to increase in absolute dollars.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">We define gross profit as our revenue less our cost of revenue, and we define gross margin as gross profit expressed as a percentage of revenue. We expect our gross profit to increase in absolute dollars, however our gross margin may fluctuate based on the business mix in each reporting period. Our gross profit and gross margin are affected by many factors, including our mix of revenue by product line, pricing, sales volume, manufacturing costs, the costs associated with increasing production capacity, the mix between domestic and foreign revenue sources, the mix between revenue produced in our internal manufacturing operations and outsourced to our external manufacturing partners and foreign exchange rates.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     17
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Operating Expenses</b></i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Operating expenses consist of marketing and sales, research and development and general and administrative expenses. Personnel-related costs are the most significant component in each of these categories.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt -1pt;">Our recent growth in operating expenses is mainly due to the launch of our Protolabs 2.0 project in the fourth quarter of 2020. During the development of Protolabs 2.0, certain research and development personnel costs were capitalizable as a software development asset. Since the system was placed in service in November 2020, the personnel costs have been expensed as incurred. In addition, amortization expense for the software asset is now being recorded over the systems&#x2019; estimated useful lives of seven to 10 years. Our business strategy is to continue to be a leading online and technology-enabled manufacturer of quick-turn, on-demand injection-molded, CNC-machined, CNC-turned, 3D-printed and sheet metal custom parts for prototyping and low-volume production. In order to achieve our goals, we anticipate continued substantial investments in technology and personnel, resulting in increased operating expenses.</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Marketing and sales. </i>Marketing and sales expense consists primarily of employee compensation, benefits, commissions, stock-based compensation, marketing programs such as electronic, print and pay-per-click advertising, trade shows and other related overhead, which includes an allocation of information technology expense including amortization of Protolabs 2.0 software assets. We expect sales and marketing expense to increase in the future as we increase the number of marketing and sales professionals and marketing programs targeted to increase our customer base and grow revenue.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Research and development.</i> Research and development expense consists primarily of personnel and outside service costs related to the development of new processes and product lines, enhancement of existing product lines, development of software for internal use, maintenance of internally developed software, quality assurance and testing. Costs for internal use software are evaluated by project and capitalized where appropriate under ASC 350-40, <i>Intangibles &#x2014; Goodwill and Other, Internal-Use Software</i>. We expect research and development expense to increase in the future as we seek to enhance our e-commerce interface technology, internal software and supporting business systems, and continue to expand our product lines.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>General and administrative.</i> General and administrative expense consists primarily of employee compensation, benefits, stock-based compensation, professional service fees related to accounting, tax and legal, and other related overhead, which includes an allocation of information technology expense including amortization of Protolabs 2.0 software assets. We expect general and administrative expense to increase in the future as we continue to grow and expand as a global organization.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Other Income, net</b></i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Other income, net primarily consists of foreign currency-related gains and losses and interest income on cash balances and investments. Our foreign currency-related gains and losses will vary depending upon movements in underlying exchange rates. Our interest income will vary each reporting period depending on our average cash balances during the period, composition of our marketable security portfolio and the current level of interest rates.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Provision for Income Taxes</b></i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Provision for income taxes is comprised of federal, state, local and foreign taxes based on pre-tax income. Overall, we expect our effective tax rate for 2021 and beyond will remain consistent based on the current tax laws.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     18
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Results of Operations</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following table summarizes our results of operations and the related changes for the periods indicated. The results below are not necessarily indicative of the results for future periods.&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px; margin-left: 0pt; margin-right: 0pt;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 16%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 22%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Three Months Ended June 30,</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 8%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Change</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 22%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Six Months Ended June 30,</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 8%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; text-align: center; margin: 0pt;"><b>Change</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
    </tr>

    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; width: 16%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; margin: 0pt;">(dollars in thousands)</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 8%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; text-align: center; margin: 0pt;"><b>2021</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 8%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; text-align: center; margin: 0pt;"><b>2020</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; text-align: center; margin: 0pt;"><b>$</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; text-align: center; margin: 0pt;"><b>%</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 8%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; text-align: center; margin: 0pt;"><b>2021</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 8%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; text-align: center; margin: 0pt;"><b>2020</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; text-align: center; margin: 0pt;"><b>$</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; text-align: center; margin: 0pt;"><b>%</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; width: 16%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; margin: 0pt;">Revenue</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">123,048</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">100.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">106,575</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">100.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">16,473</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">15.5</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">239,174</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">100.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">221,683</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">100.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">$</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">17,491</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">7.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; width: 16%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; margin: 0pt;">Cost of revenue</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">66,423</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">54.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">54,119</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">50.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">12,304</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">22.7</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">127,219</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">53.2</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">111,127</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">50.1</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">16,092</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">14.5</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; width: 16%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; margin: 0pt;">Gross profit</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">56,625</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">46.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">52,456</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">49.2</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">4,169</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">7.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">111,955</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">46.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">110,556</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">49.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">1,399</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">1.3</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; width: 16%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; margin: 0pt;">Operating expenses:</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 4%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 4%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 4%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 4%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 4%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 4%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 4%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 4%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 4%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 4%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 4%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 4%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 1%;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; width: 16%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Marketing and sales</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">21,044</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">17.1</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">16,936</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">15.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">4,108</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">24.3</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">40,524</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">16.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">35,116</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">15.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">5,408</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">15.4</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; width: 16%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Research and development</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">11,060</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">9.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">8,648</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">8.1</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">2,412</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">27.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">23,241</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">9.7</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">17,635</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">8.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">5,606</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">31.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; width: 16%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">General and administrative</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">16,180</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">13.1</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">12,521</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">11.7</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">3,659</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">29.2</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">35,588</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">14.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">26,629</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">12.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">8,959</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">33.6</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; width: 16%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 18pt;">Changes in fair value of contingent consideration</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(7,763</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(6.3</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(7,763</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">*</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(7,763</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(3.2</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(7,763</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">*</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; width: 16%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; margin: 0pt 0pt 0pt 36pt;">Total operating expenses</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">40,521</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">32.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">38,105</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">35.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,416</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6.3</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">91,590</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">38.3</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">79,380</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">35.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">12,210</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">15.4</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; width: 16%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; margin: 0pt;">Income from operations</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">16,104</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">13.1</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">14,351</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">13.5</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">1,753</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">12.2</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">20,365</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">8.5</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">31,176</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">14.1</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">(10,811</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">(34.7</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; width: 16%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; margin: 0pt;">Other income (loss), net</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">137</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">0.1</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">767</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">0.7</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(630</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(82.1</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(176</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(0.1</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,821</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">0.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(1,997</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(109.7</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; width: 16%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; margin: 0pt;">Income before income taxes</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">16,241</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">13.2</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">15,118</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">14.2</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">1,123</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">7.4</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">20,189</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">8.4</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">32,997</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">14.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">(12,808</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">(38.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; width: 16%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; margin: 0pt;">Provision for income taxes</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,326</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2.7</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,511</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2.4</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">815</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">32.5</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3,562</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1.5</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6,406</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(2,844</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(44.4</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; width: 16%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; font-variant: normal; margin: 0pt;">Net income</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">12,915</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10.5</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">12,607</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">11.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">308</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">2.4</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">16,627</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">7.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">26,591</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">12.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(9,964</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 4%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(37.5</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 9pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)%</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">*Percentage change not meaningful</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Stock-based compensation expense included in the statements of operations data above for the&#xa0;three and six months ended June 30, 2021 and&#xa0;2020 was as follows:</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Three Months Ended June 30,</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Six Months Ended June 30,</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 48%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(dollars in thousands)</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>2021</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>2020</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>2021</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>2020</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Stock options and restricted stock</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">4,563</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">3,331</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">9,854</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">6,069</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Employee stock purchase plan</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">378</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">308</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">707</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">603</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Total stock-based compensation expense</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,941</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,639</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,561</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">6,672</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
     <td>&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Cost of revenue</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">668</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">594</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">1,303</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">1,115</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Operating expenses:</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Marketing and sales</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">929</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">750</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">1,782</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">1,368</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Research and development</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">744</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">607</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">1,368</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">1,128</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">General and administrative</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">2,600</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">1,688</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">6,108</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">3,061</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Total stock-based compensation expense</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">4,941</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">3,639</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">10,561</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">6,672</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     19
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Comparison of Three Months Ended&#xa0;June 30, 2021 and&#xa0;2020</b></i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Revenue</i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Revenue by reportable segment and the related changes for the three months ended&#xa0;June 30, 2021 and&#xa0;2020 were as follows:</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 34%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="width: 34%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Three Months Ended June 30,</b></p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 34%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
     <td colspan="6" style="width: 12%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>2021</b></p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
     <td colspan="6" style="width: 12%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>2020</b></p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
     <td colspan="6" style="width: 12%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Change</b></p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
    </tr>

    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 34%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(dollars in thousands)</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>$</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>% of Total Revenue</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>$</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>% of Total Revenue</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin-top: 0pt; margin-bottom: 0pt"><b>$</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>%</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 34%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revenue</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 34%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">United States</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">95,344</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">77.5</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">86,823</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">81.5</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">8,521</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">9.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">%</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 34%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Europe</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">24,655</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">20.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">16,729</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">15.7</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">7,926</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">47.4</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 34%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Japan</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,049</td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2.5</td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">3,023</td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">2.8</td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">26</td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.9</td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 34%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total revenue</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">123,048</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">100.0</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">106,575</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">100.0</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">16,473</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">15.5</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">%</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Our revenue increased $16.5 million, or 15.5%, for the three months ended&#xa0;June 30, 2021 compared to the same period in 2020. Our revenue for the three months ended June 30, 2021 includes revenue of $8.9 million provided by our acquisition of Hubs. By reportable segment, revenue in the United States increased $8.5 million, or 9.8%, for the three months ended&#xa0;June 30, 2021 compared to the same period in 2020.&#xa0;Revenue in Europe increased $7.9 million, or 47.4%, and revenue in Japan increased 0.9%, in each case for the three months ended&#xa0;June 30, 2021 compared to the same period in 2020. Excluding Hubs, revenue in the United States increased $3.9 million, or 4.5%, and revenue in Europe increased $3.6 million, or 21.6%, in each case for the three months ended June 30, 2021 compared to the same period in 2020. International revenue&#xa0;was positively impacted&#xa0;by $1.9 million during the three months ended&#xa0;June 30, 2021 compared to the same period in&#xa0;2020 as a result of foreign currency movements, primarily the strengthening of the British Pound and Euro relative to the United States Dollar.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">During the three months ended June 30, 2021, we served 23,253 unique product developers and engineers, an increase of 36.5% over the same period in 2020. The increase in unique product developers served was primarily driven by our acquisition of Hubs. Excluding the impact of Hubs, unique product developers served increased 14.3% during the three months ended June 30, 2021 when compared to the same period in 2020. The economic uncertainty arising from the COVID-19 pandemic has impacted the number of product developers and engineers who purchase our products. While we expect the number of product developers and engineers served to grow in the long-term, challenges posed by the COVID-19 pandemic on the global economy have continued through the date of this report. At this time, it is difficult to predict the future given the current economic uncertainty and evolving market conditions.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Revenue by product line and the related changes for the three months ended&#xa0;June 30, 2021 and&#xa0;2020 were as follows:</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 34%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="width: 34%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Three Months Ended June 30,</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 34%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="width: 12%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>2021</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="width: 12%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>2020</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="width: 12%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Change</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
    </tr>

    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 34%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(dollars in thousands)</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>$</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>% of Total Revenue</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>$</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>% of Total Revenue</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin-top: 0pt; margin-bottom: 0pt"><b>$</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>%</b></p> </td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 34%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Revenue</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 8%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="margin: 0px; width: 34%; padding-left: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin-top: 0pt; margin-bottom: 0pt">Injection Molding</p> </td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">$</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">58,168</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">47.3</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">%</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">$</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">57,894</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">54.3</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">%</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">$</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">274</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">0.5</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">%</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="margin: 0px; width: 34%; padding-left: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin-top: 0pt; margin-bottom: 0pt">CNC Machining</p> </td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">41,592</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">33.8</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">28,760</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">27.0</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">12,832</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">44.6</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="margin: 0px; width: 34%; padding-left: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin-top: 0pt; margin-bottom: 0pt">3D Printing</p> </td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">18,170</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">14.8</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">14,236</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">13.4</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">3,934</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">27.6</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="margin: 0px; width: 34%; padding-left: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin-top: 0pt; margin-bottom: 0pt">Sheet Metal</p> </td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">4,717</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">3.8</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">4,669</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">4.4</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">48</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px; width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">1.0</td>
     <td style="margin: 0px; padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="margin: 0px; width: 34%; padding-left: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin-top: 0pt; margin-bottom: 0pt">Other Revenue</p> </td>
     <td style="margin: 0px; padding: 0px 0px 1px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; width: 1%; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="margin: 0px; width: 8%; text-align: right; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">401</td>
     <td style="margin: 0px; width: 1%; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px 0px 1px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; width: 1%; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="margin: 0px; width: 8%; text-align: right; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">0.3</td>
     <td style="margin: 0px; width: 1%; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px 0px 1px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; width: 1%; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="margin: 0px; width: 8%; text-align: right; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1,016</td>
     <td style="margin: 0px; width: 1%; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px 0px 1px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; width: 1%; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="margin: 0px; width: 8%; text-align: right; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">1.0</td>
     <td style="margin: 0px; width: 1%; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="margin: 0px; padding: 0px 0px 1px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; width: 1%; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="margin: 0px; width: 8%; text-align: right; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(615</td>
     <td style="margin: 0px; width: 1%; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">)</td>
     <td style="margin: 0px; padding: 0px 0px 1px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="margin: 0px; width: 1%; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="margin: 0px; width: 8%; text-align: right; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(60.5</td>
     <td style="margin: 0px; width: 1%; padding-top: 0px; padding-right: 0px; padding-left: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">)</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="width: 34%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total revenue</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">123,048</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">100.0</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">106,575</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">100.0</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">16,473</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#xa0;</td>
     <td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">15.5</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">%</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">By product line, our revenue increase was driven by a 44.6% increase in CNC Machining revenue, a 27.6% increase in 3D Printing revenue, a 0.5% increase in Injection Molding revenue and a 1.0% increase in Sheet Metal revenue, which was partially offset by a 60.5% decrease in Other Revenue, in each case for the three months ended&#xa0;June 30, 2021 compared to the same period in 2020.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     20
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Cost of Revenue, Gross Profit and Gross Margin </i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Cost of Revenue. </i>Cost of revenue increased $12.3 million, or 22.7%, for the three months ended&#xa0;June 30, 2021 compared to the same period in 2020, which was greater than the rate of revenue increase of 15.5%&#xa0;for the three months ended&#xa0;June 30, 2021 compared to the same period in 2020. The increase in cost of revenue was driven by a $7.8 million increase resulting from our acquisition of Hubs. The $4.5 million increase in cost of revenue in our legacy business was driven by an increase in headcount resulting in personnel and related cost increases of $2.6 million, an increase in raw material and product costs of $1.5 million, and an increase in equipment and facility related costs of $0.4 million.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Gross Profit and Gross Margin. </i>Gross profit increased from $52.5&#xa0;million in the three months ended&#xa0;June 30, 2020 to $56.6 million in the three months ended&#xa0;June 30, 2021. Gross margin decreased from 49.2% in&#xa0;the three months ended June 30, 2020 to 46.0% in the three months ended June 30, 2021, primarily due to the mix of revenue.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Operating Expenses, Other Income, net and Provision for Income Taxes</i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Marketing and Sales. </i>Marketing and sales expenses increased $4.1 million, or 24.3%, during the three months ended&#xa0;June 30, 2021 compared to the same period in&#xa0;2020. The increase is primarily driven by personnel and related cost increases in our legacy business of $1.2 million, information technology allocation cost increases, including amortization of Protolabs 2.0 software assets, of $1.2 million and marketing program cost increases of $0.4 million. In addition, our acquisition of Hubs provided $1.3 million in marketing and sales expenses during the three months ended June 30, 2021.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Research and Development. </i>Our research and development expenses increased $2.4 million, or 27.9%, during the three months ended&#xa0;June 30, 2021 compared to the same period in&#xa0;2020 primarily due to personnel and related cost increases of $1.6 million driven by personnel and contractor resources dedicated to the launch of our Protolabs 2.0 system.&#xa0;During the development of Protolabs 2.0, certain research and development personnel costs were capitalizable as a software development asset. Since the system was placed in service in November 2020, the personnel costs have been expensed as incurred. In addition, increases of $0.8 million resulted from our acquisition of Hubs.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>General and Administrative. </i>Our general and administrative expenses increased $3.7 million, or 29.2%, during the three months ended&#xa0;June 30, 2021 compared to the same period in&#xa0;2020 primarily due to an increase of $0.6 million in professional service costs, an increase of $0.2 million of personnel and related costs and an increase of $0.2 million in administrative costs. In addition, our acquisition of Hubs provided $2.7 million in general and administrative expense during the three months ended June 30, 2021.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Changes in fair value of contingent consideration. </i>The fair value of contingent consideration&#xa0;associated with the acquisition of Hubs decreased $7.8 million during the three months ended&#xa0;June 30, 2021 compared to the same period in&#xa0;2020. We had no contingent consideration liabilities recorded during the three months ended June 30, 2020.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Other Income, net. </i>We recognized other income, net of $0.1 million for the three months ended June 30, 2021, a decrease of $0.7 million compared to other income, net of $0.8&#xa0;million for the three&#xa0;months ended June 30, 2020. Other income, net&#xa0;for the three months ended&#xa0;June 30, 2021 primarily consisted of a gain on foreign currency and interest income on investments. Other income, net&#xa0;for the&#xa0;three months ended&#xa0;June 30, 2020 primarily consisted of $0.4&#xa0;million in interest income on investments and a $0.3&#xa0;million gain on foreign currency.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Provision for Income Taxes. </i>Our effective tax rate of 20.5% for the three months ended&#xa0;June 30, 2021 increased 3.9% compared to 16.6% for the same period in 2020. The increase in the effective tax rate is primarily due to a decrease in tax benefits from the vesting of restricted stock and the exercise of stock options. Our income tax provision of $3.3 million for the three months ended&#xa0;June 30, 2021 increased $0.8 million&#xa0;compared to our income tax provision of $2.5&#xa0;million for the three months ended June 30, 2020, due to a combination of higher pre-tax income and a higher effective tax rate.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       21
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Comparison of Six&#xa0;Months Ended&#xa0;June 30, 2021 and&#xa0;2020</b></i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Revenue</i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Revenue by reportable segment and the related changes for the six months ended June 30, 2021&#xa0;and&#xa0;2020 were as follows:</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0pt auto 0pt auto;" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Six Months Ended June 30,</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>2021</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>2020</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Change</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
    </tr>

    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 22%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(dollars in thousands)</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>$</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>% of Total Revenue</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>$</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>% of Total Revenue</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>$</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>%</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Revenue</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">United States</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">186,397</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">78.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">176,899</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">79.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,498</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">5.4</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Europe</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">46,104</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">19.3</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">37,516</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">16.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">8,588</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">22.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt;">Japan</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">6,673</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">7,268</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">3.3</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(595</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(8.2</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Total revenue</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">239,174</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">100.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">221,683</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">100.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">17,491</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">7.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0pt auto 0pt auto;" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Our revenue increased $17.5 million, or 7.9%, for the six months ended June 30, 2021&#xa0;compared to the same period in 2020. Our revenue for the six months ended June 30, 2021 includes revenue of $14.7 million provided by our acquisition of Hubs. By reportable segment, revenue in the United States increased $9.5 million, or 5.4%, for the six months ended June 30, 2021&#xa0;compared to the same period in 2020.&#xa0;Revenue in Europe increased $8.6 million, or 22.9% and revenue in Japan decreased $0.6 million, or 8.2%, in each case for the six months ended June 30, 2021&#xa0;compared to the same period in 2020. Excluding Hubs, revenue in the United States increased $1.7 million, or 1.0%, and revenue in Europe increased $1.7 million, or 4.4%, in each case for the six months ended June 30, 2021 compared to the same period in 2020. International revenue&#xa0;was positively impacted&#xa0;by $3.5 million during the six months ended June 30, 2021&#xa0;compared to the same period in&#xa0;2020 as a result of foreign currency movements, primarily the strengthening of the British Pound and Euro relative to the United States Dollar.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">During the six months ended June 30, 2021, we served 37,501 unique product developers and engineers, an increase of 26.3% over the same period in 2020. The increase in unique product developers served was primarily driven by our acquisition of Hubs. Excluding the impact of Hubs, unique product developers served increased 7.1% during the six months ended June 30, 2021 when compared to the same period in 2020. The economic uncertainty arising from the COVID-19 pandemic has impacted the number of product developers and engineers who purchase our products. While we expect the number of product developers and engineers served to grow in the long-term, challenges posed by the COVID-19 pandemic on the global economy have continued through the date of this report. At this time, it is difficult to predict the future given the current economic uncertainty and evolving market conditions.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Revenue by product line and the related changes for the six months ended June 30, 2021&#xa0;and&#xa0;2020 were as follows:</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0pt auto 0pt auto;" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Six Months Ended June 30,</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#xa0;</b></td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>2021</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>2020</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Change</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
    </tr>

    <tr class="finHeading" style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 22%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(dollars in thousands)</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>$</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>% of Total Revenue</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>$</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>% of Total Revenue</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>$</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>%</b></p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Revenue</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Injection Molding</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">114,527</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">47.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">112,670</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">50.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1,857</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">1.6</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">CNC Machining</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">78,295</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">32.7</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">66,645</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">30.1</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">11,650</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">17.5</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">3D Printing</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">35,405</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">14.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">30,184</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">13.6</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">5,221</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">17.3</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Sheet Metal</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">9,936</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4.2</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">10,318</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">4.7</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(382</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">(3.7</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt;">Other Revenue</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,011</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">0.4</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,866</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">0.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(855</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(45.8</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Total revenue</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">239,174</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">100.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">221,683</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">100.0</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">17,491</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#xa0;</td>
     <td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">7.9</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">%</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0pt auto 0pt auto;" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">By product line, our revenue increase was driven by a 17.5% increase in CNC Machining revenue, a 17.3% increase in 3D Printing revenue, and a 1.6% increase in Injection Molding revenue, which was partially offset by a 3.7% decrease in Sheet Metal revenue, and a 45.8% decrease in Other Revenue, in each case for the six months ended June 30, 2021&#xa0;compared to the same period in 2020.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       22
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink" style="display: inline-block; text-align: left;">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Cost of Revenue, Gross Profit and Gross Margin </i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Cost of Revenue. </i>Cost of revenue increased $16.1 million, or 14.5%, for the six months ended June 30, 2021&#xa0;compared to the same period in 2020, which was greater than the rate of revenue increase of 7.9% for the six months ended June 30, 2021&#xa0;compared to the same period in 2020. The increase in cost of revenue was driven by a $12.9 million increase resulting from our acquisition of Hubs. In our legacy business, cost of revenue increased $3.2 million due to an increase in headcount resulting in personnel and related cost increases of $1.7 million, an increase in raw material and product costs of $1.0 million, and an increase in equipment and facility related costs of $0.5 million.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Gross Profit and Gross Margin. </i>Gross profit increased from $110.6&#xa0;million in the six months ended June 30, 2020&#xa0;to $112.0 million in the six months ended June 30, 2021. Gross margin decreased from 49.9% in&#xa0;the six months ended June 30, 2020 to 46.8% in the six months ended June 30, 2021, primarily due to the mix of revenue.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Operating Expenses, Other (Loss) Income, net and Provision for Income Taxes</i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Marketing and Sales. </i>Marketing and sales expenses increased $5.4 million, or 15.4%, during the six months ended June 30, 2021&#xa0;compared to the same period in&#xa0;2020. In our legacy business, personnel and related cost increases of $1.2 million and information technology allocation cost increases, including amortization of Protolabs 2.0 software assets, of $2.2 million were partially offset by marketing program cost decreases of $0.3 million. In addition, our acquisition of Hubs provided $2.3 million in marketing and sales expense during the six months ended June 30, 2021.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Research and Development. </i>Our research and development expenses increased $5.6 million, or 31.8%, during the six months ended June 30, 2021&#xa0;compared to the same period in&#xa0;2020 primarily due to personnel and related cost increases of $4.4 million driven by personnel and contractor resources dedicated to the launch of our Protolabs 2.0 system.&#xa0;During the development of Protolabs 2.0, certain research and development personnel costs were capitalizable as a software development asset. Since the system was placed in service in November 2020, the personnel costs have been expensed as incurred. In addition, increases of $1.3 million resulted from our acquisition of Hubs, which were partially offset by decreases of $0.1 in professional service costs.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>General and Administrative. </i>Our general and administrative expenses increased $9.0 million, or 33.6%, during the six months ended June 30, 2021&#xa0;compared to the same period in&#xa0;2020 primarily due to an increase of $4.8 million resulting from our acquisition of Hubs, other professional service cost increases of $3.4 million and stock-based compensation cost increases of $1.7 million, which were partially offset by administrative cost decreases of $0.7 million and personnel and related cost decreases of $0.2 million.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Changes in fair value of contingent consideration. </i>The fair value of contingent consideration associated with the acquisition of Hubs decreased $7.8 million during the six months ended&#xa0;June 30, 2021. We had no contingent consideration liabilities recorded during the six months ended June 30, 2020.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Other&#xa0;(Loss) Income, net. </i>We recognized other loss, net of $0.2 million for the six months ended June 30, 2021, a decrease of $2.0 million compared to other income, net of $1.8&#xa0;million for the six months ended June 30, 2020. Other loss, net&#xa0;for the six months ended June 30, 2021&#xa0;primarily consisted of a $0.5 million loss on foreign currency, which was partially offset by $0.2 million in interest income on investments and $0.1 million in other income. Other income, net&#xa0;for the&#xa0;six months ended June 30, 2020&#xa0;primarily consisted of $0.9&#xa0;million in interest income on investments and a $0.9&#xa0;million gain on foreign currency.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Provision for Income Taxes. </i>Our effective tax rate of 17.6% for the six months ended June 30, 2021&#xa0;decreased 1.8% compared to 19.4% for the same period in 2020. The decrease in the effective tax rate is primarily due to an increase in tax benefits from the vesting of restricted stock and the exercise of stock options. Our income tax provision of $3.6 million for the six months ended June 30, 2021&#xa0;decreased $2.8 million&#xa0;compared to our income tax provision of $6.4&#xa0;million for the six months ended June 30, 2020, due to a combination of lower pre-tax income and the lower effective tax rate.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-left: 0pt; margin-right: 0pt">
   <div class="PGFTR" style="text-align: center; width: 100%">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       23
     </div>
    </div>
   </div>
   <hr style="PAGE-BREAK-AFTER: always; border: none; width: 100%; height: 2px; color: #000000; background-color: #000000" />
   <div class="PGHDR" style="text-align: left; width: 100%">
    <div class="hf-row">
     <div class="hf-cell TOCLink">
      <a href="#toc" style="font-weight: initial; font-style: initial; font-variant: initial; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif;">Table of Contents</a>
     </div>
    </div>
   </div>
  </div>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin: 0pt; text-align: left">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i><b>Liquidity and Capital Resources</b></i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Cash Flows</i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following table summarizes our cash flows during the&#xa0;six months ended June 30, 2021 and 2020:</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 70%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
     <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 16%;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Six Months Ended June 30,</b></p> </td>
     <td style="padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="width: 70%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(dollars in thousands)</p> </td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>2021</b></p> </td>
     <td style="padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>2020</b></p> </td>
     <td style="padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 70%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net cash provided by operating activities</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">20,729</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">53,417</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 70%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net cash used in investing activities</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(105,082</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(65,292</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 70%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net cash used in financing activities</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(1,856</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(15,198</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 70%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Effect of exchange rates on cash and cash equivalents</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">515</td>
     <td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#xa0;</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(149</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">)</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 70%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Net decrease in cash and cash equivalents</p> </td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(85,694</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">)</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</td>
     <td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td>
     <td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(27,222</td>
     <td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">)</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);" />
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Sources of Liquidity</i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Historically, we have primarily financed our operations and capital expenditures through cash flow from operations. We had cash and cash equivalents of $41.9 million as of June 30, 2021, a decrease of $85.7 million from December 31, 2020. The decrease in our cash was primarily due to cash used in investing activity for our acquisition of Hubs of $127.4 million and purchases of property, equipment and other capital assets of $23.9 million, which were partially offset by net proceeds from investments in marketable securities of $46.2&#xa0;million and cash generated through operations of $20.7 million.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Cash Flows from Operating Activities</i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Cash flows from operating activities were $20.7 million during the&#xa0;six months ended June 30, 2021 and primarily consisted of net income of $16.6 million, adjusted for certain non-cash items, including depreciation and amortization of $20.1 million and stock-based compensation expense of $10.6 million, which were partially offset by a decrease in the fair value of contingent consideration of $7.8 million and changes in operating assets and liabilities and other items totaling $18.8 million. Cash flows from operating activities were $53.4&#xa0;million during the&#xa0;six months ended June 30, 2020 and primarily consisted of net income of $26.6&#xa0;million, adjusted for certain non-cash items, including depreciation and amortization of $15.9&#xa0;million, stock-based compensation expense of $6.7&#xa0;million and deferred taxes of $5.7&#xa0;million, which were partially offset by&#xa0;changes in operating assets and liabilities and other items totaling $1.5&#xa0;million.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Cash flows from operating activities decreased $32.7 million during the&#xa0;six months ended June 30, 2021 compared to the same period in 2020, primarily due to decreases in net income of $10.0 million, decreases in accounts receivable of $19.0 million driven by timing of cash receipts, a decrease in the fair value of contingent consideration of $7.8 million, and decreases in deferred taxes of $5.2 million, which were partially offset by increases in depreciation and amortization of $4.3 million, increases in stock-based compensation of $3.9 million and increases of $1.1 million in other items.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Cash Flows from Investing Activities</i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Cash used in investing activities was $105.1 million during the six months ended June 30, 2021, consisting of $127.4 million in cash used for acquisitions, net of cash acquired and $23.9 million for the purchases of property, equipment and other capital assets, which were partially offset by $46.2 million for net proceeds from investments in marketable securities.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Cash used in&#xa0;investing activities was $65.3&#xa0;million during the six months ended June 30, 2020, consisting of $29.0 million in net investments in marketable securities, $33.3&#xa0;million for the purchases of property, equipment and other capital assets and $3.0 million for purchases of other assets and investments.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     24
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Cash Flows from Financing Activities</i></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Cash used in financing activities was $1.9 million during the six months ended June 30, 2021, consisting of $4.2 million in purchases of shares withheld for tax obligations associated with equity transactions, $1.2 million in repurchases of common stock and $0.3 million for repayments of finance lease obligations, which were&#xa0;partially offset by $3.8 million in proceeds from the exercise of stock options.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Cash used in financing activities was $15.2&#xa0;million during the six months ended June 30, 2020, consisting of $14.7&#xa0;million in repurchases of common stock and $3.4&#xa0;million in purchases of shares withheld for tax obligations associated with equity transactions, which were partially offset by $2.9&#xa0;million in proceeds from the exercise of stock options.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Off-Balance Sheet Arrangements</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Since our inception, we have not engaged in any off-balance sheet arrangements, including the use of structured finance, special purpose entities or variable interest entities.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Critical Accounting Policies and Use of Estimates</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">We have adopted various accounting policies to prepare the Consolidated Financial Statements in accordance with accounting principles generally accepted in the United States of America (U.S. GAAP). Our significant accounting policies are disclosed in Note 2 to the Consolidated Financial Statements included in our Annual Report on Form 10-K for the year ended December 31, 2020.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Recent Accounting Pronouncements</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">For information on recent accounting pronouncements, see Note 2 to the Consolidated Financial Statements appearing in Part I, Item 1 in this Quarterly Report on Form 10-Q.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     25
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="i3" title="i3" href="#"></a>Item&#xa0;3. Quantitative and Qualitative Disclosures about Market Risk</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Foreign Currency Risk</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">As a result of our foreign operations, we have revenue, expenses, assets and liabilities that are denominated in foreign currencies. We generate revenue and incur production costs and operating expenses in British Pounds, Euros and Japanese Yen.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Our operating results and cash flows are adversely impacted when the United States Dollar appreciates relative to foreign currencies. Additionally, our operating results and cash flows are adversely impacted when the British Pound appreciates relative to the Euro. As we expand internationally, our results of operations and cash flows will become increasingly subject to changes in foreign currency exchange rates.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">We have not used forward contracts or currency borrowings to hedge our exposure to foreign currency risk. Foreign currency risk can be assessed by estimating the change in results of operations or financial position resulting from a hypothetical 10% adverse change in foreign exchange rates. We believe such a change would generally not have a material impact on our financial position, but could have a material impact on our results of operations. We recognized foreign currency gains of $0.1 million and foreign currency losses of $0.5 million during the three and six months ended&#xa0;June 30, 2021, respectively. We recognized foreign currency gains of $0.3 million and $0.9 million during the three and six months ended&#xa0;June 30, 2020, respectively. The changes in foreign exchange rates had a positive impact on consolidated revenue of $1.9 million for the three months ended&#xa0;June 30, 2021&#xa0;and $3.5 million for the six months ended June 30, 2021&#xa0;as compared to the same periods in 2020.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     26
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="i4" title="i4" href="#"></a>Item&#xa0;4. Controls and Procedures</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Evaluation of Disclosure Controls and Procedures</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Our management, with the participation of our Chief Executive Officer and Chief Financial Officer, has evaluated the effectiveness of the design and operation of our disclosure controls and procedures (as defined in Rule 13a-15(e) under the Securities Exchange Act of 1934 (Exchange Act)) as of the end of the period covered by this report. Based upon that evaluation, the Chief Executive Officer and Chief Financial Officer have concluded that, as of the end of the period covered by this quarterly report, our disclosure controls and procedures are effective and provide reasonable assurance that information required to be disclosed by us in the reports that we file or submit under the Exchange Act is recorded, processed, summarized and reported accurately and within the time frames specified in the SEC&#x2019;s rules and forms and accumulated and communicated to our management, including our Chief Executive Officer and Chief Financial Officer, as appropriate to allow timely decisions regarding required disclosure.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Changes in Internal Control over Financial Reporting</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">During the first quarter of 2021, the Company completed the implementation of Protolabs 2.0, an internal business systems project impacting both external customer-facing and internal back-end systems. Emphasis has been on the maintenance of effective internal controls throughout development and deployment of all phases. The Company evaluated and concluded the implementation of Protolabs 2.0 has not materially affected the Company's internal control over financial reporting. Based on this evaluation, there have been no changes in our internal control over financial reporting (as such term is defined in Rule 13a-15(f) under the Exchange Act) during the period covered by this report that have materially affected, or are reasonably likely to materially affect, our internal control over financial reporting.</p>
  <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">&#xa0;</p>
  <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt -1pt; text-indent: 0pt;">Management has excluded certain elements of Hubs from its assessment of internal control over financial reporting as of June 30, 2021. Subsequent to the acquisition, Hubs maintained its revenue and payroll systems and processing through June 30, 2021. Those elements of the acquired business&#x2019;s internal control over financial reporting that were not fully integrated into the Company&#x2019;s existing internal control over financial reporting during 2021 have been excluded from management&#x2019;s assessment of the effectiveness of internal control over financial reporting. Hubs is a wholly-owned subsidiary of the Company&#x37e; its combined total assets, excluding goodwill, and total revenues excluded from our assessment represent approximately 4% and 6%, respectively, of the related consolidated financial statements amounts as of the six months ended June 30, 2021.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     27
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="p2" title="p2" href="#"></a>PART II. OTHER INFORMATION</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="p2i1" title="p2i1" href="#"></a>Item&#xa0;1. Legal Proceedings</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">From time to time, we are subject to various legal proceedings and claims that arise in the ordinary course of our business activities. Although the results of litigation and claims cannot be predicted with certainty, as of the date of these financial statements, we do not believe we are party to any litigation the outcome of which, if determined adversely to us, would individually or in the aggregate be reasonably expected to have a material adverse effect on our business.&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="p2i1a" title="p2i1a" href="#"></a>Item 1A. Risk Factors</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Part I, Item 1A. &#x201c;Risk Factors&#x201d; in our Annual Report on Form 10-K for the year ended&#xa0;December 31, 2020 includes a discussion of our risk factors. There have been no material changes from the risk factors described in our Form 10-K.</p>
  <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="p2i2" title="p2i2" href="#"></a>Item&#xa0;2. Unregistered Sales of Equity Securities and Use of Proceeds</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">On&#xa0;February 9, 2017,&#xa0;we announced that our&#xa0;board of directors had&#xa0;authorized the repurchase of shares of our common stock from time to time on the open market or in privately negotiated purchases, at an aggregate purchase price of up to $50 million.&#xa0;On May 16, 2019, we announced that our board of directors approved a $50 million increase in its authorized stock repurchase program and extended the term of the program through December 31, 2023. This authorization increases the stock repurchase program to $100 million. The timing and amount of any share repurchases will be determined by our management based on market conditions and other factors.&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">During the three months ended June 30, 2021, we repurchased 14,000 shares of our common stock at a total purchase price of $1.2 million under this program.&#xa0;Common stock repurchase activity through&#xa0;June 30, 2021&#xa0;was as follows:</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;">
   <tbody>
    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt; width: 52%; border-bottom: thin solid rgb(0, 0, 0);"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Period</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Total Number of Shares Purchased</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; width: 9px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 94px;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Average Price Paid per Share</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Total Number of Shares Purchased as Part of Publicly Announced Plans or Programs</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; width: 9px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 330px;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b>Maximum Dollar Value of Shares that May Yet Be Purchased Under the Plans or Programs (in thousands) (1)</b></p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt; width: 52%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">April 1, 2021 through April 30, 2021</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">-</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; width: 9px; text-align: right;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; width: 94px;">$-</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">-</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; width: 9px; text-align: right;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; width: 330px;">$35,175</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt; width: 52%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">May 1, 2021 through May 31, 2021</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">-</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; width: 9px;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; width: 94px;">$-</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">-</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; width: 9px;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; width: 330px;">$35,175</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt; width: 52%; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">June 1, 2021 through June 30, 2021</p> </td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">14,000</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; width: 9px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black; width: 94px;">$86.53</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">14,000</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; width: 9px; border-bottom: thin solid rgb(0, 0, 0);">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black; width: 330px;">$33,964</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
    </tr>

    <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
     <td style="font-family: Times New Roman; font-size: 10pt; width: 52%; padding: 0; margin: 0">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">14,000</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; width: 9px; text-align: right; border-bottom: 3px double black;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; width: 94px; border-bottom: 3px double black;">$86.53</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">14,000</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; width: 9px; text-align: right; border-bottom: 3px double black;">&#xa0;</td>
     <td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; padding: 0px; margin: 0px; width: 330px; border-bottom: 3px double black;">$33,964</td>
     <td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#xa0;</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><sup style="vertical-align:top;line-height:120%;font-size:pt">1 </sup>Effective May 15, 2019 the Board of Directors authorized the repurchase of shares of the Company&#x2019;s common stock from time to time on the open market or in privately negotiated purchases, at an aggregate purchase price of up to $100 million. The term of the program runs through December 31, 2023.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="p2i3" title="p2i3" href="#"></a>Item&#xa0;3. Defaults Upon Senior Securities</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">No matters to disclose.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="p2i4" title="p2i4" href="#"></a>Item&#xa0;4. Mine Safety Disclosures</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">No matters to disclose.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="p2i5" title="p2i5" href="#"></a>Item&#xa0;5. Other Information</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">No matters to disclose.</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     28
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><a id="p2i6" title="p2i6" href="#"></a>Item 6. Exhibits</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following documents are filed as part of this report:</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" style="margin: 0pt; width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
   <tbody>
    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td colspan="2" style="width: 167px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Exhibit Number</b></p> </td>
     <td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 1571px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Description of Exhibit</b></p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td colspan="2" style="width: 167px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">3.1<span style="font-family: Times New Roman; font-size: 8pt;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(1)</sup></span></p> </td>
     <td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 1571px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000119312512054357/d199869dex32.htm" style="-sec-extract: exhibit;">Third Amended and Restated Articles of Incorporation of Proto Labs, Inc.</a></p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td colspan="2" style="width: 167px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">3.2<span style="font-family: Times New Roman; font-size: 8pt;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(2)</sup></span></p> </td>
     <td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 1571px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: bottom;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774915010824/ex3-1.htm" style="-sec-extract: exhibit;">Articles of Amendment to Third Amended and Restated Articles of Incorporation of Proto Labs, Inc. dated May 20, 2015</a></td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td colspan="2" style="width: 167px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">3.3<span style="font-family: Times New Roman; font-size: 8pt;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(3)</sup></span></p> </td>
     <td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 1571px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="http://www.sec.gov/Archives/edgar/data/1443669/000143774916041414/ex3-1.htm" style="-sec-extract: exhibit;">Second Amended and Restated By-Laws of Proto Labs, Inc., as amended through November 8, 2016</a></p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td colspan="2" style="width: 167px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">31.1</p> </td>
     <td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 1571px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="ex_252264.htm" style="-sec-extract:exhibit;">Certification of the Chief Executive Officer pursuant to Section 302 of the Sarbanes-Oxley Act</a></p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td colspan="2" style="width: 167px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">31.2</p> </td>
     <td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 1571px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="ex_252265.htm" style="-sec-extract:exhibit;">Certification of the Chief Financial Officer pursuant to Section 302 of the Sarbanes-Oxley Act</a></p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td colspan="2" style="width: 167px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">32.1</p> </td>
     <td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 1571px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><a href="ex_252266.htm" style="-sec-extract:exhibit;">Certification of the Chief Executive Officer and the Chief Financial Officer pursuant to Section 906 of the Sarbanes-Oxley Act</a></p> </td>
    </tr>

    <tr>
     <td colspan="2" style="width: 167px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top; text-align: center;">101.INS</td>
     <td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 1571px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: bottom;">Inline XBRL Instance Document (the Instance Document does not appear in the Interactive Data File because its XBRL tags are embedded within the Inline XBRL document)</td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td colspan="2" style="width: 167px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">101.SCH</p> </td>
     <td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 1571px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Inline XBRL Taxonomy Extension Schema Document</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td colspan="2" style="width: 167px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">101.CAL</p> </td>
     <td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 1571px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Inline XBRL Taxonomy Extension Calculation Linkbase Document</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td colspan="2" style="width: 167px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">101.DEF</p> </td>
     <td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 1571px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Inline XBRL Taxonomy Extension Definition Linkbase Document</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td colspan="2" style="width: 167px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">101.LAB</p> </td>
     <td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 1571px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Inline XBRL Taxonomy Extension Label Linkbase Document</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td colspan="2" style="width: 167px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">101.PRE</p> </td>
     <td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 1571px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: bottom;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Inline XBRL Taxonomy Extension Presentation Linkbase Document</p> </td>
    </tr>

    <tr>
     <td colspan="2" style="width: 167px; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">104</td>
     <td style="width: 15px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">&#xa0;</td>
     <td style="width: 1571px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: bottom;">Cover Page Interactive Data File (formatted as Inline XBRL and contained in Exhibit 101)</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#xa0;</p>
  <table cellpadding="0" cellspacing="0" style="margin: 0pt; width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
   <tbody>
    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 27px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;; font-size: 8pt;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(1)</sup></p> </td>
     <td colspan="3" style="width: 1728px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Previously filed as Exhibit 3.2 to the Company&#x2019;s Registration Statement on Form S-1/A (File No. 333-175745), filed with the Commission on February 13, 2012, and incorporated by reference herein.</p> </td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 27px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;; font-size: 8pt;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(2)</sup></p> </td>
     <td colspan="3" style="width: 1728px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">Previously filed as Exhibit 3.1 to the Company's Form 8-K (File No. 001-35435), filed with the Commission on May 21, 2015 and incorporated by reference herein.</td>
    </tr>

    <tr style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
     <td style="width: 27px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;"> <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;; font-size: 8pt;"><sup style="vertical-align:top;line-height:120%;font-size:pt">(3)</sup></p> </td>
     <td colspan="3" style="width: 1728px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; vertical-align: top;">Previously filed as Exhibit 3.1 to the Company's Form 8-K (File No. 001-35435), filed with the Commission on November 8, 2016 and incorporated by reference herein.</td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <div class="PGBK" style="width: 100%; margin-right: 0pt; margin-left: 0pt;">
   <div class="PGNUM" style="width: 100%; text-align: center; font-family: Times New Roman; font-size: 10pt;">
     29
   </div>
   <hr style="border: currentColor; border-image: none; width: 100%; height: 2px; color: rgb(0, 0, 0); page-break-after: always; background-color: rgb(0, 0, 0);" />
   <div class="PGHDR" style="width: 100%; text-align: left;">
    <div class="hf-row">
     <a href="#toc" style="font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif">Table of Contents</a>
    </div>
   </div>
  </div>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>SIGNATURE</b></p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; 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 thereunto duly authorized.</p>
  <p style="margin: 0pt 14.7pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
   <tbody>
    <tr>
     <td style="width: 45%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 5%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 40%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Proto Labs, Inc.</p> </td>
     <td style="width: 10%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="width: 45%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 5%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 40%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 10%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="width: 45%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Date: August 3, 2021</p> </td>
     <td style="width: 5%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 40%; vertical-align: middle; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">/s/ Robert Bodor</p> </td>
     <td style="width: 10%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="width: 45%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 5%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 40%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Robert Bodor</p> </td>
     <td style="width: 10%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="width: 45%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 5%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 40%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">President and Chief Executive Officer</p> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(Principal Executive Officer)</p> </td>
     <td style="width: 10%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="margin: 0pt 14.7pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p>
  <table border="0" cellpadding="0" cellspacing="0" style="width: 100%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">
   <tbody>
    <tr>
     <td style="width: 45%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Date: August 3, 2021</p> </td>
     <td style="width: 5%; vertical-align: top;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 40%; vertical-align: middle; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">/s/ John A. Way</p> </td>
     <td style="width: 10%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="width: 45%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 5%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 40%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">John A. Way</p> </td>
     <td style="width: 10%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
    </tr>

    <tr>
     <td style="width: 45%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 5%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
     <td style="width: 40%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Chief Financial Officer</p> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">(Principal Financial Officer)</p> </td>
     <td style="width: 10%; vertical-align: middle;"> <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#xa0;</p> </td>
    </tr>

   </tbody>
  </table>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0">&#xa0;</p>
  <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0">&#xa0;</p>
  <div class="LAST-PAGE-BREAK">
   <div class="PGFTR">
    <div class="hf-row">
     <div class="hf-cell PGNUM" style="text-align: center; font-size: 10pt; font-family: Times New Roman;">
       30
     </div>
    </div>
   </div>
  </div>
 </body>
</html>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-31.1
<SEQUENCE>2
<FILENAME>ex_252264.htm
<DESCRIPTION>EXHIBIT 31.1
<TEXT>
<html><head>
	<title>ex_150111.htm</title>
	<!-- Generated by ThunderDome Portal - 7/19/2021 4:08:06 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0in 0.1in; cursor: auto;">
<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:right;"><b>Exhibit 31.1</b></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>CERTIFICATION PURSUANT TO RULE 13a-14(a) OR 15d-14(a) OF </b></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>THE SECURITIES EXCHANGE ACT OF 1934, </b></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>AS ADOPTED PURSUANT TO SECTION 302 OF </b></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;"><b>THE SARBANES-OXLEY ACT OF 2002</b></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">I, Robert Bodor, certify that:</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">1. I have reviewed this Quarterly Report on Form 10-Q of Proto Labs, Inc.;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">2. Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">3. Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects the financial condition, results of operations and cash flows of the registrant as of, and for, the periods presented in this report;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">4. The registrant&#8217;s other certifying officer and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules 13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules 13a-15(f) and 15d-15(f)) for the registrant and have:</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">a)</p>
			</td>
			<td style="vertical-align:top;width:88%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared;</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 37.2pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">b)</p>
			</td>
			<td style="vertical-align:top;width:88%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles;</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 37.2pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">c)</p>
			</td>
			<td style="vertical-align:top;width:88%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Evaluated the effectiveness of the registrant&#8217;s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation; and</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 37.2pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">d)</p>
			</td>
			<td style="vertical-align:top;width:88%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Disclosed in this report any change in the registrant&#8217;s internal control over financial reporting that occurred during the registrant&#8217;s most recent fiscal quarter (the registrant&#8217;s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant&#8217;s internal control over financial reporting; and</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">5. The registrant&#8217;s other certifying officer and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant&#8217;s auditors and the audit committee of the registrant&#8217;s board of directors (or persons performing the equivalent functions):</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">a)</p>
			</td>
			<td style="vertical-align:top;width:88%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">All significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the registrant&#8217;s ability to record, process, summarize and report financial information; and</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 37.2pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">b)</p>
			</td>
			<td style="vertical-align:top;width:88%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant&#8217;s internal control over financial reporting.</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:46.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Date: August 3, 2021</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:right;">By:</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;border-bottom:solid 1px #000000;;width:43.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Robert Bodor</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:46.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:43.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Robert Bodor</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:46.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:43.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">President and Chief Executive Officer</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:46.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:43.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">(Principal Executive Officer)</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 22.2pt;text-align:center;">&nbsp;</p>

<div class="LAST-PAGE-BREAK">
<div class="PGFTR">
<div class="hf-row">
<div class="hf-cell PGNUM">&nbsp;</div>
</div>
</div>

<hr style="width: 100%; height: 2px; color: #000000; background-color: #000000;border: none;"></div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-31.2
<SEQUENCE>3
<FILENAME>ex_252265.htm
<DESCRIPTION>EXHIBIT 31.2
<TEXT>
<html><head>
	<title>ex_150111.htm</title>
	<!-- Generated by ThunderDome Portal - 7/19/2021 4:08:26 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0in 0.1in; cursor: auto;">
<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"><b>Exhibit 31.2</b></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>CERTIFICATION PURSUANT TO RULE 13a-14(a) OR 15d-14(a) OF </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>THE SECURITIES EXCHANGE ACT OF 1934, </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>AS ADOPTED PURSUANT TO SECTION 302 OF </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>THE SARBANES-OXLEY ACT OF 2002</b>&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">I, John A. Way, certify that:</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">1. I have reviewed this Quarterly Report on Form 10-Q of Proto Labs, Inc.;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">2. Based on my knowledge, this report does not contain any untrue statement of a material fact or omit to state a material fact necessary to make the statements made, in light of the circumstances under which such statements were made, not misleading with respect to the period covered by this report;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">3. Based on my knowledge, the financial statements, and other financial information included in this report, fairly present in all material respects the financial condition, results of operations and cash flows of the registrant as of, and for, the periods presented in this report;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">4. The registrant&#8217;s other certifying officer and I are responsible for establishing and maintaining disclosure controls and procedures (as defined in Exchange Act Rules 13a-15(e) and 15d-15(e)) and internal control over financial reporting (as defined in Exchange Act Rules 13a-15(f) and 15d-15(f)) for the registrant and have:</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">a)</p>
			</td>
			<td style="vertical-align:top;width:88%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Designed such disclosure controls and procedures, or caused such disclosure controls and procedures to be designed under our supervision, to ensure that material information relating to the registrant, including its consolidated subsidiaries, is made known to us by others within those entities, particularly during the period in which this report is being prepared;</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 37.2pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">b)</p>
			</td>
			<td style="vertical-align:top;width:88%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Designed such internal control over financial reporting, or caused such internal control over financial reporting to be designed under our supervision, to provide reasonable assurance regarding the reliability of financial reporting and the preparation of financial statements for external purposes in accordance with generally accepted accounting principles;</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 37.2pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">c)</p>
			</td>
			<td style="vertical-align:top;width:88%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Evaluated the effectiveness of the registrant&#8217;s disclosure controls and procedures and presented in this report our conclusions about the effectiveness of the disclosure controls and procedures, as of the end of the period covered by this report based on such evaluation; and</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 37.2pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">d)</p>
			</td>
			<td style="vertical-align:top;width:88%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Disclosed in this report any change in the registrant&#8217;s internal control over financial reporting that occurred during the registrant&#8217;s most recent fiscal quarter (the registrant&#8217;s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant&#8217;s internal control over financial reporting; and</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left; text-indent: 27pt;">5. The registrant&#8217;s other certifying officer and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant&#8217;s auditors and the audit committee of the registrant&#8217;s board of directors (or persons performing the equivalent functions):</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">a)</p>
			</td>
			<td style="vertical-align:top;width:88%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">All significant deficiencies and material weaknesses in the design or operation of internal control over financial reporting which are reasonably likely to adversely affect the registrant&#8217;s ability to record, process, summarize and report financial information; and</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 37.2pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:9%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">b)</p>
			</td>
			<td style="vertical-align:top;width:88%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant&#8217;s internal control over financial reporting.</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:46.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Date: August 3, 2021</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:right;">By:</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;border-bottom:solid 1px #000000;;width:43.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ John A. Way</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:46.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:43.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">John A. Way</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:46.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:43.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Chief Financial Officer</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:46.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:3.1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:0.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:43.8%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">(Principal Financial Officer)</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<div class="LAST-PAGE-BREAK">
<div class="PGFTR">
<div class="hf-row">
<div class="hf-cell PGNUM">&nbsp;</div>
</div>
</div>

<hr style="width: 100%; height: 2px; color: #000000; background-color: #000000;border: none;"></div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-32.1
<SEQUENCE>4
<FILENAME>ex_252266.htm
<DESCRIPTION>EXHIBIT 32.1
<TEXT>
<html><head>
	<title>ex_150111.htm</title>
	<!-- Generated by ThunderDome Portal - 7/19/2021 4:08:55 PM --><meta charset="utf-8"><meta name="format-detection" content="telephone=no">
</head>
<body style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0in 0.1in; cursor: auto;">
<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 7.2pt;text-align:left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: right;"><b>Exhibit 32.1</b></p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>CERTIFICATION OF CHIEF EXECUTIVE OFFICER AND CHIEF FINANCIAL OFFICER </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>PURSUANT TO </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>18 U.S.C. SECTION 1350, </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>AS ADOPTED PURSUANT TO </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: center;"><b>SECTION 906 OF THE SARBANES-OXLEY ACT OF 2002 </b></p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">I, Robert Bodor, certify, pursuant to 18 U.S.C. Section 1350, as adopted pursuant to Section 906 of the Sarbanes-Oxley Act of 2002, that the Quarterly Report of Proto Labs, Inc. on Form 10-Q for the fiscal quarter ended&nbsp;<a data-tblloc="5x1" data-tblname="53341" data-tblv="20" id="led53341F20211271614466143920">June 30, 2021</a> fully complies with the requirements of Section 13(a) or 15(d) of the Securities Exchange Act of 1934 and that information contained in such Quarterly Report on Form 10-Q fairly presents in all material respects the financial condition and results of operations of Proto Labs, Inc.</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">Date: August 3, 2021</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:57.3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:4.1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">By:</p>
			</td>
			<td style="vertical-align:bottom;border-bottom:solid 1px #000000;;width:1.2%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;border-bottom:solid 1px #000000;;width:37.4%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ Robert Bodor</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:57.3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td colspan="2" style="vertical-align:top;width:5.3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Name:</p>
			</td>
			<td style="vertical-align:bottom;width:37.4%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Robert Bodor</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:57.3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:4.1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Title:</p>
			</td>
			<td style="vertical-align:bottom;width:1.2%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:37.4%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">President and Chief Executive Officer</p>
			</td>
		</tr>

</table>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">I, John A. Way, certify, pursuant to 18 U.S.C. Section 1350, as adopted pursuant to Section 906 of the Sarbanes-Oxley Act of 2002, that the Quarterly Report of Proto Labs, Inc. on Form 10-Q for the fiscal quarter ended <a data-tblloc="5x1" data-tblname="53341" data-tblv="20" id="led53341F20211271614466143920">June 30, 2021</a> fully complies with the requirements of Section 13(a) or 15(d) of the Securities Exchange Act of 1934 and that information contained in such Quarterly Report on Form 10-Q fairly presents in all material respects the financial condition and results of operations of Proto Labs, Inc.</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">Date: August 3, 2021</p>

<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt 44.7pt;text-align:left;">&nbsp;</p>

<table border="0" cellpadding="0" cellspacing="0" style="width:100%;text-indent:0;font-family:'Times New Roman', Times, serif;font-size:10pt;">

		<tr>
			<td style="vertical-align:top;width:57.3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:4.1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">By:</p>
			</td>
			<td style="vertical-align:bottom;border-bottom:solid 1px #000000;;width:1.2%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;border-bottom:solid 1px #000000;;width:37.4%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">/s/ John A. Way</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:57.3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td colspan="2" style="vertical-align:top;width:5.3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Name:</p>
			</td>
			<td style="vertical-align:bottom;width:37.4%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">John A. Way</p>
			</td>
		</tr>
		<tr>
			<td style="vertical-align:top;width:57.3%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:top;width:4.1%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Title:</p>
			</td>
			<td style="vertical-align:bottom;width:1.2%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&nbsp;</p>
			</td>
			<td style="vertical-align:bottom;width:37.4%;">
			<p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">Chief Financial Officer</p>
			</td>
		</tr>

</table>

<p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt; text-align: left;">&nbsp;</p>

<div class="LAST-PAGE-BREAK">
<div class="PGFTR">
<div class="hf-row">
<div class="hf-cell PGNUM">&nbsp;</div>
</div>
</div>

<hr style="width: 100%; height: 2px; color: #000000; background-color: #000000;border: none;"></div>


</body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.SCH
<SEQUENCE>5
<FILENAME>prlb-20210630.xsd
<DESCRIPTION>XBRL TAXONOMY EXTENSION SCHEMA
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 04:54PM UTC 2021-08-03--><xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:country="http://xbrl.sec.gov/country/2021" xmlns:currency="http://xbrl.sec.gov/currency/2021" xmlns:dei="http://xbrl.sec.gov/dei/2021" xmlns:dtr-types="http://www.xbrl.org/dtr/type/2020-01-21" xmlns:exch="http://xbrl.sec.gov/exch/2021" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:naics="http://xbrl.sec.gov/naics/2021" xmlns:prlb="http://www.protolabs.com/20210630" xmlns:sic="http://xbrl.sec.gov/sic/2021" xmlns:srt="http://fasb.org/srt/2021-01-31" xmlns:srt-types="http://fasb.org/srt-types/2021-01-31" xmlns:stpr="http://xbrl.sec.gov/stpr/2021" xmlns:us-gaap="http://fasb.org/us-gaap/2021-01-31" xmlns:us-types="http://fasb.org/us-types/2021-01-31" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xlink="http://www.w3.org/1999/xlink" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.protolabs.com/20210630">
  <xsd:import namespace="http://xbrl.sec.gov/country/2021" schemaLocation="https://xbrl.sec.gov/country/2021/country-2021.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/naics/2021" schemaLocation="https://xbrl.sec.gov/naics/2021/naics-2021.xsd"/>
  <xsd:import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
  <xsd:import namespace="http://fasb.org/us-gaap/2021-01-31" schemaLocation="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd"/>
  <xsd:import namespace="http://fasb.org/srt/2021-01-31" schemaLocation="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/dei/2021" schemaLocation="https://xbrl.sec.gov/dei/2021/dei-2021.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/stpr/2021" schemaLocation="https://xbrl.sec.gov/stpr/2021/stpr-2021.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/sic/2021" schemaLocation="https://xbrl.sec.gov/sic/2021/sic-2021.xsd"/>
  <xsd:import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/exch/2021" schemaLocation="https://xbrl.sec.gov/exch/2021/exch-2021.xsd"/>
  <xsd:import namespace="http://fasb.org/us-types/2021-01-31" schemaLocation="https://xbrl.fasb.org/us-gaap/2021/elts/us-types-2021-01-31.xsd"/>
  <xsd:import namespace="http://xbrl.sec.gov/currency/2021" schemaLocation="https://xbrl.sec.gov/currency/2021/currency-2021.xsd"/>
  <xsd:import namespace="http://www.xbrl.org/dtr/type/2020-01-21" schemaLocation="https://www.xbrl.org/dtr/type/2020-01-21/types.xsd"/>
  <xsd:import namespace="http://fasb.org/srt-types/2021-01-31" schemaLocation="https://xbrl.fasb.org/srt/2021/elts/srt-types-2021-01-31.xsd"/>
  <xsd:import namespace="http://www.xbrl.org/2009/role/negated" schemaLocation="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd"/>
  <xsd:annotation>
    <xsd:appinfo>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="prlb-20210630_lab.xml" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="prlb-20210630_cal.xml" xlink:role="http://www.xbrl.org/2003/role/calculationLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="prlb-20210630_def.xml" xlink:role="http://www.xbrl.org/2003/role/definitionLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="prlb-20210630_pre.xml" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" xlink:type="simple"/>
      <link:roleType id="statement-document-and-entity-information" roleURI="http://www.protolabs.com/20210630/role/statement-document-and-entity-information">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">000 - Document - Document And Entity Information</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-balance-sheets-current-period-unaudited" roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">001 - Statement - Consolidated Balance Sheets (Current Period Unaudited)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">002 - Statement - Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-comprehensive-income-unaudited" roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">003 - Statement - Consolidated Statements of Comprehensive Income (Unaudited)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-shareholders-equity-unaudited" roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">004 - Statement - Consolidated Statements of Shareholders' Equity (Unaudited)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-consolidated-statements-of-cash-flows-unaudited" roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">005 - Statement - Consolidated Statements of Cash Flows (Unaudited)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-1-basis-of-presentation" roleURI="http://www.protolabs.com/20210630/role/statement-note-1-basis-of-presentation">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">006 - Disclosure - Note 1 - Basis of Presentation</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-2-recent-accounting-pronouncements" roleURI="http://www.protolabs.com/20210630/role/statement-note-2-recent-accounting-pronouncements">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">007 - Disclosure - Note 2 - Recent Accounting Pronouncements</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-3-net-income-per-common-share" roleURI="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">008 - Disclosure - Note 3 - Net Income Per Common Share</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-business-combinations" roleURI="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">009 - Disclosure - Note 4 - Business Combinations</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-goodwill-and-other-intangible-assets" roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">010 - Disclosure - Note 5 - Goodwill and Other Intangible Assets</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-fair-value-measurements" roleURI="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">011 - Disclosure - Note 6 - Fair Value Measurements</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-7-marketable-securities" roleURI="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">012 - Disclosure - Note 7 - Marketable Securities</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-inventory" roleURI="http://www.protolabs.com/20210630/role/statement-note-8-inventory">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">013 - Disclosure - Note 8 - Inventory</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-stockbased-compensation" roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">014 - Disclosure - Note 9 - Stock-based Compensation</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-10-accumulated-other-comprehensive-income-loss" roleURI="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">015 - Disclosure - Note 10 - Accumulated Other Comprehensive Income (Loss)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-income-taxes" roleURI="http://www.protolabs.com/20210630/role/statement-note-11-income-taxes">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">016 - Disclosure - Note 11 - Income Taxes</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-12-segment-reporting" roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">017 - Disclosure - Note 12 - Segment Reporting</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-3-net-income-per-common-share-tables" roleURI="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">018 - Disclosure - Note 3 - Net Income Per Common Share (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-business-combinations-tables" roleURI="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">019 - Disclosure - Note 4 - Business Combinations (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-goodwill-and-other-intangible-assets-tables" roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">020 - Disclosure - Note 5 - Goodwill and Other Intangible Assets (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-fair-value-measurements-tables" roleURI="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">021 - Disclosure - Note 6 - Fair Value Measurements (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-7-marketable-securities-tables" roleURI="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">022 - Disclosure - Note 7 - Marketable Securities (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-inventory-tables" roleURI="http://www.protolabs.com/20210630/role/statement-note-8-inventory-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">023 - Disclosure - Note 8 - Inventory (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-stockbased-compensation-tables" roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">024 - Disclosure - Note 9 - Stock-based Compensation (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-10-accumulated-other-comprehensive-income-loss-tables" roleURI="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">025 - Disclosure - Note 10 - Accumulated Other Comprehensive Income (Loss) (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-12-segment-reporting-tables" roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">026 - Disclosure - Note 12 - Segment Reporting (Tables)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">027 - Disclosure - Note 3 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-business-combinations-details-textual" roleURI="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">028 - Disclosure - Note 4 - Business Combinations (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">029 - Disclosure - Note 4 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-goodwill-and-other-intangible-assets-details-textual" roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">030 - Disclosure - Note 5 - Goodwill and Other Intangible Assets (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">031 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Changes in the Carrying Amount of Goodwill (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">032 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">033 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-fair-value-measurements-details-textual" roleURI="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">034 - Disclosure - Note 6 - Fair Value Measurements (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">035 - Disclosure - Note 6 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">036 - Disclosure - Note 7 - Marketable Securities - Short-term and Long-term Available for Sale Securities (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">037 - Disclosure - Note 7 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-8-inventory-inventory-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">038 - Disclosure - Note 8 - Inventory - Inventory (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-stockbased-compensation-details-textual" roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">039 - Disclosure - Note 9 - Stock-based Compensation (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-stockbased-compensation-stock-option-activity-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">040 - Disclosure - Note 9 - Stock-based Compensation - Stock Option Activity (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">041 - Disclosure - Note 9 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-stockbased-compensation-restricted-stock-options-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">042 - Disclosure - Note 9 - Stock-based Compensation - Restricted Stock Options (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-stockbased-compensation-performance-stock-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">043 - Disclosure - Note 9 - Stock-based Compensation - Performance Stock (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">044 - Disclosure - Note 9 - Stock-based Compensation - Assumptions Used in the Valuation of Performance Stock (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">045 - Disclosure - Note 9 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">046 - Disclosure - Note 10 - Accumulated Other Comprehensive Income (Loss) - Other Comprehensive Loss (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-11-income-taxes-details-textual" roleURI="http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">047 - Disclosure - Note 11 - Income Taxes (Details Textual)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">048 - Disclosure - Note 12 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-12-segment-reporting-income-from-operations-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">049 - Disclosure - Note 12 - Segment Reporting - Income From Operations (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">050 - Disclosure - Note 12 - Segment Reporting - Long-lived Assets by Geographic Region (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
      <link:roleType id="statement-note-12-segment-reporting-disaggregation-of-revenue-details" roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details">
        <link:definition xmlns="http://www.xbrl.org/2003/linkbase">051 - Disclosure - Note 12 - Segment Reporting - Disaggregation of Revenue (Details)</link:definition>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
        <link:usedOn>link:presentationLink</link:usedOn>
      </link:roleType>
    </xsd:appinfo>
  </xsd:annotation>
  <xsd:element abstract="true" id="prlb_Acquired3dHubsMember" name="Acquired3dHubsMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid" name="BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration" name="BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities" name="BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="duration"/>
  <xsd:element id="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent" name="BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent" name="BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="credit" xbrli:periodType="instant"/>
  <xsd:element id="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" name="BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element abstract="true" id="prlb_CNCMachiningFirstcutMember" name="CNCMachiningFirstcutMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_DocumentAndEntityInformation" name="DocumentAndEntityInformation" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_ESPPMember" name="ESPPMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" name="EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:percentItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_EmployeeStockPurchasePlanMember" name="EmployeeStockPurchasePlanMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_EmployeeStockPurchasePlanOfferingPeriod" name="EmployeeStockPurchasePlanOfferingPeriod" nillable="true" substitutionGroup="xbrli:item" type="xbrli:durationItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_EuropeSegmentMember" name="EuropeSegmentMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour" name="FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour" nillable="true" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType" xbrli:balance="debit" xbrli:periodType="instant"/>
  <xsd:element id="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" name="IncomeFromOperationsByGeographicAreaTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_InjectionMoldingProtomoldMember" name="InjectionMoldingProtomoldMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_JapanSegmentMember" name="JapanSegmentMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_LongtermIncentivePlan2012Member" name="LongtermIncentivePlan2012Member" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_NoteToFinancialStatementDetailsTextual" name="NoteToFinancialStatementDetailsTextual" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_NotesToFinancialStatements" name="NotesToFinancialStatements" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_NotesToFinancialStatementsAbstract" name="NotesToFinancialStatementsAbstract" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_OtherProductsMember" name="OtherProductsMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" name="PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:percentItemType" xbrli:periodType="instant"/>
  <xsd:element id="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" name="PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:percentItemType" xbrli:periodType="instant"/>
  <xsd:element id="prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" name="ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" name="SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" nillable="true" substitutionGroup="xbrli:item" type="xbrli:sharesItemType" xbrli:periodType="duration"/>
  <xsd:element id="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" name="SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:perShareItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_SheetMetalMember" name="SheetMetalMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_SoftwarePlatformMember" name="SoftwarePlatformMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_ThreeDPrintingFinelineMember" name="ThreeDPrintingFinelineMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_UnitedStatesSegmentMember" name="UnitedStatesSegmentMember" nillable="true" substitutionGroup="xbrli:item" type="dtr-types:domainItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" name="statement-statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-tables" name="statement-statement-note-10-accumulated-other-comprehensive-income-loss-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-12-segment-reporting-disaggregation-of-revenue-details" name="statement-statement-note-12-segment-reporting-disaggregation-of-revenue-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-12-segment-reporting-income-from-operations-details" name="statement-statement-note-12-segment-reporting-income-from-operations-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" name="statement-statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" name="statement-statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-12-segment-reporting-tables" name="statement-statement-note-12-segment-reporting-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" name="statement-statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-3-net-income-per-common-share-tables" name="statement-statement-note-3-net-income-per-common-share-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" name="statement-statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-4-business-combinations-tables" name="statement-statement-note-4-business-combinations-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" name="statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" name="statement-statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" name="statement-statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-tables" name="statement-statement-note-5-goodwill-and-other-intangible-assets-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" name="statement-statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-6-fair-value-measurements-tables" name="statement-statement-note-6-fair-value-measurements-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" name="statement-statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" name="statement-statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-7-marketable-securities-tables" name="statement-statement-note-7-marketable-securities-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-8-inventory-inventory-details" name="statement-statement-note-8-inventory-inventory-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-8-inventory-tables" name="statement-statement-note-8-inventory-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" name="statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" name="statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" name="statement-statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-9-stockbased-compensation-performance-stock-details" name="statement-statement-note-9-stockbased-compensation-performance-stock-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-9-stockbased-compensation-restricted-stock-options-details" name="statement-statement-note-9-stockbased-compensation-restricted-stock-options-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-9-stockbased-compensation-stock-option-activity-details" name="statement-statement-note-9-stockbased-compensation-stock-option-activity-details" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
  <xsd:element abstract="true" id="prlb_statement-statement-note-9-stockbased-compensation-tables" name="statement-statement-note-9-stockbased-compensation-tables" nillable="true" substitutionGroup="xbrli:item" type="xbrli:stringItemType" xbrli:periodType="duration"/>
</xsd:schema>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.CAL
<SEQUENCE>6
<FILENAME>prlb-20210630_cal.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION CALCULATION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 04:54PM UTC 2021-08-03--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:href="prlb-20210630.xsd#statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="extended">
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent" xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent" xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAcquiredFromAcquisition" xlink:label="us-gaap_CashAcquiredFromAcquisition" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross" xlink:label="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:to="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:to="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:to="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:to="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:to="us-gaap_CashAcquiredFromAcquisition" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:href="prlb-20210630.xsd#statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="extended">
    <link:loc xlink:href="prlb-20210630.xsd#prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour" xlink:label="prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:href="prlb-20210630.xsd#statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details" xlink:href="prlb-20210630.xsd#statement-note-8-inventory-inventory-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryValuationReserves" xlink:label="us-gaap_InventoryValuationReserves" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryNet" xlink:to="us-gaap_InventoryGross" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_InventoryNet" xlink:to="us-gaap_InventoryValuationReserves" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:href="prlb-20210630.xsd#statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:to="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:href="prlb-20210630.xsd#statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesFairValueDisclosure" xlink:label="us-gaap_LiabilitiesFairValueDisclosure" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesFairValueDisclosure" xlink:to="us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited" xlink:href="prlb-20210630.xsd#statement-consolidated-balance-sheets-current-period-unaudited" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:label="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent" xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent" xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxesReceivable" xlink:label="us-gaap_IncomeTaxesReceivable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MarketableSecuritiesCurrent" xlink:label="us-gaap_MarketableSecuritiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MarketableSecuritiesNoncurrent" xlink:label="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherIntangibleAssetsNet" xlink:label="us-gaap_OtherIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_AccountsReceivableNetCurrent" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_MarketableSecuritiesCurrent" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_IncomeTaxesReceivable" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_OtherIntangibleAssetsNet" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_AssetsCurrent" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Assets" xlink:to="us-gaap_OtherAssetsNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_AccountsPayableCurrent" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_LiabilitiesCurrent" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_PreferredStockValue" xlink:type="arc"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_CommonStockValue" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_Liabilities" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited" xlink:href="prlb-20210630.xsd#statement-consolidated-statements-of-comprehensive-income-unaudited" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SellingAndMarketingExpense" xlink:label="us-gaap_SellingAndMarketingExpense" xlink:type="locator"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_GrossProfit" xlink:to="us-gaap_CostOfGoodsAndServicesSold" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_GrossProfit" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingExpenses" xlink:to="us-gaap_SellingAndMarketingExpense" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingExpenses" xlink:to="us-gaap_GeneralAndAdministrativeExpense" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingExpenses" xlink:to="us-gaap_ResearchAndDevelopmentExpense" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingIncomeLoss" xlink:to="us-gaap_GrossProfit" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OperatingIncomeLoss" xlink:to="us-gaap_OperatingExpenses" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_OperatingIncomeLoss" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetIncomeLoss" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetIncomeLoss" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited" xlink:href="prlb-20210630.xsd#statement-consolidated-statements-of-cash-flows-unaudited" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss" xlink:label="us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:label="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt" xlink:label="us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireOtherInvestments" xlink:label="us-gaap_PaymentsToAcquireOtherInvestments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:label="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:label="us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities" xlink:label="us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation" xlink:type="locator"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_DepreciationDepletionAndAmortization" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="arc"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="arc"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="arc"/>
    <link:calculationArc order="6" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="arc"/>
    <link:calculationArc order="7" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_IncreaseDecreaseInInventories" xlink:type="arc"/>
    <link:calculationArc order="8" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_OtherNoncashIncomeExpense" xlink:type="arc"/>
    <link:calculationArc order="9" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:type="arc"/>
    <link:calculationArc order="10" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss" xlink:type="arc"/>
    <link:calculationArc order="11" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:type="arc"/>
    <link:calculationArc order="12" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_ShareBasedCompensation" xlink:type="arc"/>
    <link:calculationArc order="13" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:type="arc"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_PaymentsToAcquireOtherInvestments" xlink:type="arc"/>
    <link:calculationArc order="5" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="arc"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="arc"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="arc"/>
    <link:calculationArc order="3" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_FinanceLeasePrincipalPayments" xlink:type="arc"/>
    <link:calculationArc order="0" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="arc"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="arc"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:href="prlb-20210630.xsd#statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:calculationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:label="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:label="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:type="locator"/>
    <link:calculationArc order="0" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:to="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:type="arc"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:to="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:type="arc"/>
  </link:calculationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.DEF
<SEQUENCE>7
<FILENAME>prlb-20210630_def.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION DEFINITION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 04:54PM UTC 2021-08-03--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/all" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#all" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/domain-member" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#domain-member" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-domain" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#hypercube-dimension" xlink:type="simple"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-default" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting" xlink:href="prlb-20210630.xsd#statement-note-12-segment-reporting" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentReportingDisclosureTextBlock" xlink:label="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss" xlink:href="prlb-20210630.xsd#statement-note-10-accumulated-other-comprehensive-income-loss" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:label="us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-8-inventory" xlink:href="prlb-20210630.xsd#statement-note-8-inventory" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-8-inventory" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryDisclosureTextBlock" xlink:label="us-gaap_InventoryDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_InventoryDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities" xlink:href="prlb-20210630.xsd#statement-note-7-marketable-securities" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentTextBlock" xlink:label="us-gaap_InvestmentTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_InvestmentTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share" xlink:href="prlb-20210630.xsd#statement-note-3-net-income-per-common-share" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareTextBlock" xlink:label="us-gaap_EarningsPerShareTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_EarningsPerShareTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-2-recent-accounting-pronouncements" xlink:href="prlb-20210630.xsd#statement-note-2-recent-accounting-pronouncements" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-2-recent-accounting-pronouncements" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SignificantAccountingPoliciesTextBlock" xlink:label="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-1-basis-of-presentation" xlink:href="prlb-20210630.xsd#statement-note-1-basis-of-presentation" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-1-basis-of-presentation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-document-and-entity-information" xlink:href="prlb-20210630.xsd#statement-document-and-entity-information" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-document-and-entity-information" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentInformationLineItems" xlink:label="dei_DocumentInformationLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentInformationTable" xlink:label="dei_DocumentInformationTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentQuarterlyReport" xlink:label="dei_DocumentQuarterlyReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentType" xlink:label="dei_DocumentType" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_TradingSymbol" xlink:label="dei_TradingSymbol" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="dei_DocumentInformationTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentInformationTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCentralIndexKey" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityRegistrantName" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_AmendmentFlag" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CurrentFiscalYearEndDate" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalPeriodFocus" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalYearFocus" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentType" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentQuarterlyReport" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentPeriodEndDate" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentTransitionReport" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFileNumber" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityIncorporationStateCountryCode" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityTaxIdentificationNumber" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressAddressLine1" xlink:type="arc"/>
    <link:definitionArc order="15" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressCityOrTown" xlink:type="arc"/>
    <link:definitionArc order="16" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressStateOrProvince" xlink:type="arc"/>
    <link:definitionArc order="17" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressPostalZipCode" xlink:type="arc"/>
    <link:definitionArc order="18" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CityAreaCode" xlink:type="arc"/>
    <link:definitionArc order="19" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_LocalPhoneNumber" xlink:type="arc"/>
    <link:definitionArc order="20" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_Security12bTitle" xlink:type="arc"/>
    <link:definitionArc order="21" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_TradingSymbol" xlink:type="arc"/>
    <link:definitionArc order="22" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_SecurityExchangeName" xlink:type="arc"/>
    <link:definitionArc order="23" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCurrentReportingStatus" xlink:type="arc"/>
    <link:definitionArc order="24" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityInteractiveDataCurrent" xlink:type="arc"/>
    <link:definitionArc order="25" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFilerCategory" xlink:type="arc"/>
    <link:definitionArc order="26" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntitySmallBusiness" xlink:type="arc"/>
    <link:definitionArc order="27" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityEmergingGrowthCompany" xlink:type="arc"/>
    <link:definitionArc order="28" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityShellCompany" xlink:type="arc"/>
    <link:definitionArc order="29" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCommonStockSharesOutstanding" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations" xlink:href="prlb-20210630.xsd#statement-note-4-business-combinations" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioForecastMember" xlink:label="srt_ScenarioForecastMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationDisclosureTextBlock" xlink:label="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementScenarioAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ScenarioUnspecifiedDomain" xlink:to="srt_ScenarioForecastMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets" xlink:href="prlb-20210630.xsd#statement-note-5-goodwill-and-other-intangible-assets" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2021/country-2021.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:label="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="srt_EuropeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_US" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements" xlink:href="prlb-20210630.xsd#statement-note-6-fair-value-measurements" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioForecastMember" xlink:label="srt_ScenarioForecastMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueDisclosuresTextBlock" xlink:label="us-gaap_FairValueDisclosuresTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementScenarioAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ScenarioUnspecifiedDomain" xlink:to="srt_ScenarioForecastMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_FairValueDisclosuresTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_LongtermIncentivePlan2012Member" xlink:label="prlb_LongtermIncentivePlan2012Member" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameAxis" xlink:label="us-gaap_PlanNameAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_PlanNameAxis" xlink:to="us-gaap_PlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PlanNameAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PlanNameDomain" xlink:to="prlb_LongtermIncentivePlan2012Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_PlanNameAxis" xlink:to="us-gaap_PlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="prlb_ESPPMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-11-income-taxes" xlink:href="prlb-20210630.xsd#statement-note-11-income-taxes" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-11-income-taxes" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxDisclosureTextBlock" xlink:label="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-tables" xlink:href="prlb-20210630.xsd#statement-note-3-net-income-per-common-share-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables" xlink:href="prlb-20210630.xsd#statement-note-4-business-combinations-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:label="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:href="prlb-20210630.xsd#statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:label="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfGoodwillTextBlock" xlink:label="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:label="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-tables" xlink:href="prlb-20210630.xsd#statement-note-6-fair-value-measurements-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-tables" xlink:href="prlb-20210630.xsd#statement-note-7-marketable-securities-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock" xlink:label="us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:label="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-8-inventory-tables" xlink:href="prlb-20210630.xsd#statement-note-8-inventory-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-8-inventory-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:label="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" xlink:label="prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-tables" xlink:href="prlb-20210630.xsd#statement-note-10-accumulated-other-comprehensive-income-loss-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:label="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables" xlink:href="prlb-20210630.xsd#statement-note-12-segment-reporting-tables" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:label="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:label="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:label="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ConsolidationItemsDomain" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual" xlink:href="prlb-20210630.xsd#statement-note-4-business-combinations-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid" xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration" xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities" xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioForecastMember" xlink:label="srt_ScenarioForecastMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" xlink:label="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles" xlink:label="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillPurchaseAccountingAdjustments" xlink:label="us-gaap_GoodwillPurchaseAccountingAdjustments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross" xlink:label="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementScenarioAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ScenarioUnspecifiedDomain" xlink:to="srt_ScenarioForecastMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GoodwillPurchaseAccountingAdjustments" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual" xlink:href="prlb-20210630.xsd#statement-note-5-goodwill-and-other-intangible-assets-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2021/country-2021.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AmortizationOfIntangibleAssets" xlink:label="us-gaap_AmortizationOfIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss" xlink:label="us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:label="us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAcquiredDuringPeriod" xlink:label="us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="srt_EuropeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_SegmentGeographicalDomain" xlink:to="country_US" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AmortizationOfIntangibleAssets" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual" xlink:href="prlb-20210630.xsd#statement-note-6-fair-value-measurements-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioForecastMember" xlink:label="srt_ScenarioForecastMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" xlink:label="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross" xlink:label="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementScenarioAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ScenarioUnspecifiedDomain" xlink:to="srt_ScenarioForecastMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:label="prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_LongtermIncentivePlan2012Member" xlink:label="prlb_LongtermIncentivePlan2012Member" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense" xlink:label="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameAxis" xlink:label="us-gaap_PlanNameAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_PlanNameAxis" xlink:to="us-gaap_PlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PlanNameAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PlanNameDomain" xlink:to="prlb_LongtermIncentivePlan2012Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_PlanNameAxis" xlink:to="us-gaap_PlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="prlb_ESPPMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EmployeeStockPurchasePlanMember" xlink:label="prlb_EmployeeStockPurchasePlanMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameAxis" xlink:label="us-gaap_PlanNameAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_PlanNameAxis" xlink:to="us-gaap_PlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PlanNameAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_PlanNameDomain" xlink:to="prlb_EmployeeStockPurchasePlanMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_PlanNameAxis" xlink:to="us-gaap_PlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual" xlink:href="prlb-20210630.xsd#statement-note-11-income-taxes-details-textual" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:label="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefits" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" xlink:href="prlb-20210630.xsd#statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesAuthorized" xlink:label="us-gaap_CommonStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesIssued" xlink:label="us-gaap_CommonStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockParOrStatedValuePerShare" xlink:label="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockSharesAuthorized" xlink:label="us-gaap_PreferredStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockSharesIssued" xlink:label="us-gaap_PreferredStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesAuthorized" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesIssued" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesAuthorized" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesIssued" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesOutstanding" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:href="prlb-20210630.xsd#statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent" xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent" xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAcquiredFromAcquisition" xlink:label="us-gaap_CashAcquiredFromAcquisition" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross" xlink:label="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_CashAcquiredFromAcquisition" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" xlink:href="prlb-20210630.xsd#statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAcquiredDuringPeriod" xlink:label="us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:label="us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:href="prlb-20210630.xsd#statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour" xlink:label="prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" xlink:href="prlb-20210630.xsd#statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis" xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BankTimeDepositsMember" xlink:label="us-gaap_BankTimeDepositsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAxis" xlink:label="us-gaap_CashAndCashEquivalentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:label="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CorporateDebtSecuritiesMember" xlink:label="us-gaap_CorporateDebtSecuritiesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinancialInstrumentAxis" xlink:label="us-gaap_FinancialInstrumentAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HeldToMaturitySecurities" xlink:label="us-gaap_HeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HeldToMaturitySecuritiesFairValue" xlink:label="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:label="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:label="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:label="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:label="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:label="us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:label="us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_CashAndCashEquivalentsAxis" xlink:to="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FinancialInstrumentAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:to="us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:to="us-gaap_CorporateDebtSecuritiesMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:to="us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_CashAndCashEquivalentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:to="us-gaap_BankTimeDepositsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_CashAndCashEquivalentsAxis" xlink:to="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:to="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecurities" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:href="prlb-20210630.xsd#statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details" xlink:href="prlb-20210630.xsd#statement-note-8-inventory-inventory-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryValuationReserves" xlink:label="us-gaap_InventoryValuationReserves" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryGross" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryValuationReserves" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:href="prlb-20210630.xsd#statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_SoftwarePlatformMember" xlink:label="prlb_SoftwarePlatformMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:label="us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsGross" xlink:label="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:label="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:label="us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NoncompeteAgreementsMember" xlink:label="us-gaap_NoncompeteAgreementsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TradeNamesMember" xlink:label="us-gaap_TradeNamesMember" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_NoncompeteAgreementsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_RangeMember" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="prlb_SoftwarePlatformMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_TradeNamesMember" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_CustomerRelationshipsMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:href="prlb-20210630.xsd#statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareBasic" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareDiluted" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:href="prlb-20210630.xsd#statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsFairValueDisclosure" xlink:label="us-gaap_AssetsFairValueDisclosure" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsFairValueDisclosure" xlink:label="us-gaap_CashAndCashEquivalentsFairValueDisclosure" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain" xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain" xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByAssetClassAxis" xlink:label="us-gaap_FairValueByAssetClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:label="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis" xlink:label="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel1Member" xlink:label="us-gaap_FairValueInputsLevel1Member" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel2Member" xlink:label="us-gaap_FairValueInputsLevel2Member" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel3Member" xlink:label="us-gaap_FairValueInputsLevel3Member" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain" xlink:label="us-gaap_FairValueMeasurementFrequencyDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain" xlink:label="us-gaap_FairValueMeasurementFrequencyDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember" xlink:label="us-gaap_FairValueMeasurementsRecurringMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesFairValueDisclosure" xlink:label="us-gaap_LiabilitiesFairValueDisclosure" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MoneyMarketFundsMember" xlink:label="us-gaap_MoneyMarketFundsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FairValueByAssetClassAxis" xlink:to="us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:to="us-gaap_FairValueMeasurementFrequencyDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FairValueMeasurementFrequencyDomain" xlink:to="us-gaap_FairValueMeasurementsRecurringMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:to="us-gaap_FairValueMeasurementFrequencyDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:to="us-gaap_FairValueInputsLevel1Member" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueMeasurementsFairValueHierarchyDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:to="us-gaap_FairValueInputsLevel2Member" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:to="us-gaap_FairValueInputsLevel3Member" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FairValueByAssetClassAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain" xlink:to="us-gaap_MoneyMarketFundsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_FairValueByAssetClassAxis" xlink:to="us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain-default" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CashAndCashEquivalentsFairValueDisclosure" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsFairValueDisclosure" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LiabilitiesFairValueDisclosure" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-stock-option-activity-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:href="prlb-20210630.xsd#statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ConsolidationItemsDomain" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_UnitedStatesSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_EuropeSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_JapanSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details" xlink:href="prlb-20210630.xsd#statement-note-12-segment-reporting-income-from-operations-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ConsolidationItemsDomain" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_UnitedStatesSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_EuropeSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_JapanSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingIncomeLoss" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" xlink:href="prlb-20210630.xsd#statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ConsolidationItemsDomain" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_UnitedStatesSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_EuropeSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_SegmentDomain" xlink:to="prlb_JapanSegmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details" xlink:href="prlb-20210630.xsd#statement-note-12-segment-reporting-disaggregation-of-revenue-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_CNCMachiningFirstcutMember" xlink:label="prlb_CNCMachiningFirstcutMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_InjectionMoldingProtomoldMember" xlink:label="prlb_InjectionMoldingProtomoldMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_OtherProductsMember" xlink:label="prlb_OtherProductsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_SheetMetalMember" xlink:label="prlb_SheetMetalMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_ThreeDPrintingFinelineMember" xlink:label="prlb_ThreeDPrintingFinelineMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ProductOrServiceAxis" xlink:label="srt_ProductOrServiceAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="srt_ProductOrServiceAxis" xlink:to="srt_ProductsAndServicesDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="srt_ProductOrServiceAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ProductsAndServicesDomain" xlink:to="prlb_InjectionMoldingProtomoldMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="srt_ProductOrServiceAxis" xlink:to="srt_ProductsAndServicesDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ProductsAndServicesDomain" xlink:to="prlb_CNCMachiningFirstcutMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ProductsAndServicesDomain" xlink:to="prlb_ThreeDPrintingFinelineMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ProductsAndServicesDomain" xlink:to="prlb_SheetMetalMember" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="srt_ProductsAndServicesDomain" xlink:to="prlb_OtherProductsMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited" xlink:href="prlb-20210630.xsd#statement-consolidated-balance-sheets-current-period-unaudited" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:label="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsCurrentAbstract" xlink:label="us-gaap_AssetsCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent" xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent" xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxesReceivable" xlink:label="us-gaap_IncomeTaxesReceivable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesCurrentAbstract" xlink:label="us-gaap_LiabilitiesCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MarketableSecuritiesCurrent" xlink:label="us-gaap_MarketableSecuritiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MarketableSecuritiesNoncurrent" xlink:label="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherIntangibleAssetsNet" xlink:label="us-gaap_OtherIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquityAbstract" xlink:label="us-gaap_StockholdersEquityAbstract" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsCurrentAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_MarketableSecuritiesCurrent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AccountsReceivableNetCurrent" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_IncomeTaxesReceivable" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AssetsCurrent" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OtherIntangibleAssetsNet" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OtherAssetsNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="14" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_Assets" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LiabilitiesCurrentAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccountsPayableCurrent" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LiabilitiesCurrent" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="arc"/>
    <link:definitionArc order="12" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="arc"/>
    <link:definitionArc order="13" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_Liabilities" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquityAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_PreferredStockValue" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_CommonStockValue" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited" xlink:href="prlb-20210630.xsd#statement-consolidated-statements-of-comprehensive-income-unaudited" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingExpensesAbstract" xlink:label="us-gaap_OperatingExpensesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenuesAbstract" xlink:label="us-gaap_RevenuesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SellingAndMarketingExpense" xlink:label="us-gaap_SellingAndMarketingExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenuesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RevenuesAbstract" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RevenuesAbstract" xlink:to="us-gaap_CostOfGoodsAndServicesSold" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_RevenuesAbstract" xlink:to="us-gaap_GrossProfit" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingExpensesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_SellingAndMarketingExpense" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_ResearchAndDevelopmentExpense" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_GeneralAndAdministrativeExpense" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingExpenses" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareBasic" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareDiluted" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited" xlink:href="prlb-20210630.xsd#statement-consolidated-statements-of-cash-flows-unaudited" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss" xlink:label="us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:label="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt" xlink:label="us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireOtherInvestments" xlink:label="us-gaap_PaymentsToAcquireOtherInvestments" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:label="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:label="us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities" xlink:label="us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DepreciationDepletionAndAmortization" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_ShareBasedCompensation" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_OtherNoncashIncomeExpense" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInInventories" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireOtherInvestments" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_FinanceLeasePrincipalPayments" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited" xlink:href="prlb-20210630.xsd#statement-consolidated-statements-of-shareholders-equity-unaudited" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdditionalPaidInCapitalMember" xlink:label="us-gaap_AdditionalPaidInCapitalMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockMember" xlink:label="us-gaap_CommonStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:label="us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:label="us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_CommonStockMember" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AdditionalPaidInCapitalMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesOutstanding" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:definitionArc order="11" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:href="prlb-20210630.xsd#statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember" xlink:label="us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedTranslationAdjustmentMember" xlink:label="us-gaap_AccumulatedTranslationAdjustmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:label="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:label="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AccumulatedTranslationAdjustmentMember" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-restricted-stock-options-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="arc"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-performance-stock-details" xlink:type="simple"/>
  <link:definitionLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-default" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain-default" xlink:type="arc"/>
    <link:definitionArc order="0" xbrldt:closed="true" xbrldt:contextElement="segment" xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:definitionArc order="1" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:type="arc"/>
    <link:definitionArc order="2" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="3" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="arc"/>
    <link:definitionArc order="4" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="5" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="arc"/>
    <link:definitionArc order="6" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="7" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:type="arc"/>
    <link:definitionArc order="8" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:definitionArc order="9" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="arc"/>
    <link:definitionArc order="10" xbrldt:closed="true" xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="arc"/>
  </link:definitionLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.LAB
<SEQUENCE>8
<FILENAME>prlb-20210630_lab.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION LABEL LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 04:54PM UTC 2021-08-03--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedPeriodEndLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodEndLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedPeriodStartLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodStartLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTotalLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTerseLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedNetLabel" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedNetLabel" xlink:type="simple"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/netLabel" xlink:href="http://www.xbrl.org/lrr/role/net-2009-12-16.xsd#netLabel" xlink:type="simple"/>
  <link:labelLink xlink:role="http://www.xbrl.org/2003/role/link" xlink:type="extended">
    <link:loc xlink:href="prlb-20210630.xsd#prlb_DocumentAndEntityInformation" xlink:label="prlb_DocumentAndEntityInformation" xlink:type="locator"/>
    <link:label xlink:label="prlb_DocumentAndEntityInformation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document And Entity Information</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_DocumentAndEntityInformation" xlink:to="prlb_DocumentAndEntityInformation-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Expected dividend yield</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:label xlink:label="prlb_NoteToFinancialStatementDetailsTextual-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note To Financial Statement Details Textual</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="prlb_NoteToFinancialStatementDetailsTextual-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-3-net-income-per-common-share-tables" xlink:label="prlb_statement-statement-note-3-net-income-per-common-share-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-3-net-income-per-common-share-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 3 - Net Income Per Common Share</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-3-net-income-per-common-share-tables" xlink:to="prlb_statement-statement-note-3-net-income-per-common-share-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-4-business-combinations-tables" xlink:label="prlb_statement-statement-note-4-business-combinations-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-4-business-combinations-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 4 - Business Combinations</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-4-business-combinations-tables" xlink:to="prlb_statement-statement-note-4-business-combinations-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 5 - Goodwill and Other Intangible Assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:to="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Risk-free interest rate</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Current assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-6-fair-value-measurements-tables" xlink:label="prlb_statement-statement-note-6-fair-value-measurements-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-6-fair-value-measurements-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 6 - Fair Value Measurements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-6-fair-value-measurements-tables" xlink:to="prlb_statement-statement-note-6-fair-value-measurements-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-7-marketable-securities-tables" xlink:label="prlb_statement-statement-note-7-marketable-securities-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-7-marketable-securities-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 7 - Marketable Securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-7-marketable-securities-tables" xlink:to="prlb_statement-statement-note-7-marketable-securities-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-8-inventory-tables" xlink:label="prlb_statement-statement-note-8-inventory-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-8-inventory-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 8 - Inventory</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-8-inventory-tables" xlink:to="prlb_statement-statement-note-8-inventory-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Intangible assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-9-stockbased-compensation-tables" xlink:label="prlb_statement-statement-note-9-stockbased-compensation-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-9-stockbased-compensation-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Stock-based Compensation</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-9-stockbased-compensation-tables" xlink:to="prlb_statement-statement-note-9-stockbased-compensation-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-tables" xlink:label="prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 10 - Accumulated Other Comprehensive Income (Loss)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-tables" xlink:to="prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-12-segment-reporting-tables" xlink:label="prlb_statement-statement-note-12-segment-reporting-tables" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-12-segment-reporting-tables-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 12 - Segment Reporting</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-12-segment-reporting-tables" xlink:to="prlb_statement-statement-note-12-segment-reporting-tables-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:label="prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:type="locator"/>
    <link:label xlink:label="prlb_EmployeeStockPurchasePlanOfferingPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_EmployeeStockPurchasePlanOfferingPeriod</link:label>
    <link:label xlink:label="prlb_EmployeeStockPurchasePlanOfferingPeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Employee Stock Purchase Plan, Offering Period (Month)</link:label>
    <link:label xlink:label="prlb_EmployeeStockPurchasePlanOfferingPeriod-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The offering period during which employees may purchase stock through the Employee Stock Purchase Plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:to="prlb_EmployeeStockPurchasePlanOfferingPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxDisclosureTextBlock" xlink:label="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Tax Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxDisclosureTextBlock" xlink:to="us-gaap_IncomeTaxDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:label="prlb_statement-statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 3 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:to="prlb_statement-statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:label="prlb_statement-statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 4 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:to="prlb_statement-statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Net unrealized gains (losses) on investments in securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:to="us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 5 - Goodwill and Other Intangible Assets - Changes in the Carrying Amount of Goodwill (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" xlink:to="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Expected volatility</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 5 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:to="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent" xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current contingent consideration</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent" xlink:to="us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 5 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:to="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LiabilitiesCurrent</link:label>
    <link:label xlink:label="us-gaap_LiabilitiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total current liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesCurrent" xlink:to="us-gaap_LiabilitiesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:label="prlb_statement-statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 6 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:to="prlb_statement-statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" xlink:label="prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 7 - Marketable Securities - Short-term and Long-term Available for Sale Securities (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" xlink:to="prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:label="prlb_statement-statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 7 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:to="prlb_statement-statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Expected life (months) (Month)</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Expected life (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Assets acquired:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-8-inventory-inventory-details" xlink:label="prlb_statement-statement-note-8-inventory-inventory-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-8-inventory-inventory-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 8 - Inventory - Inventory (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-8-inventory-inventory-details" xlink:to="prlb_statement-statement-note-8-inventory-inventory-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Consideration Transferred, Equity Interests Issued and Issuable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-9-stockbased-compensation-stock-option-activity-details" xlink:label="prlb_statement-statement-note-9-stockbased-compensation-stock-option-activity-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-9-stockbased-compensation-stock-option-activity-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Stock-based Compensation - Stock Option Activity (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-9-stockbased-compensation-stock-option-activity-details" xlink:to="prlb_statement-statement-note-9-stockbased-compensation-stock-option-activity-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:label="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:to="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationConsiderationTransferred1</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Consideration Transferred, Total</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total purchase consideration</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationConsiderationTransferred1" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-9-stockbased-compensation-restricted-stock-options-details" xlink:label="prlb_statement-statement-note-9-stockbased-compensation-restricted-stock-options-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-9-stockbased-compensation-restricted-stock-options-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Stock-based Compensation - Restricted Stock Options (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-9-stockbased-compensation-restricted-stock-options-details" xlink:to="prlb_statement-statement-note-9-stockbased-compensation-restricted-stock-options-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-9-stockbased-compensation-performance-stock-details" xlink:label="prlb_statement-statement-note-9-stockbased-compensation-performance-stock-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-9-stockbased-compensation-performance-stock-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Stock-based Compensation - Performance Stock (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-9-stockbased-compensation-performance-stock-details" xlink:to="prlb_statement-statement-note-9-stockbased-compensation-performance-stock-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:label="us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinitelivedIntangibleAssetsAcquired1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinitelivedIntangibleAssetsAcquired1</link:label>
    <link:label xlink:label="us-gaap_FinitelivedIntangibleAssetsAcquired1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Finite-lived Intangible Assets Acquired</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:to="us-gaap_FinitelivedIntangibleAssetsAcquired1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Share-based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:label="us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_USStatesAndPoliticalSubdivisionsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">US States and Political Subdivisions Debt Securities [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:to="us-gaap_USStatesAndPoliticalSubdivisionsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:label="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Stock-based Compensation - Assumptions Used in the Valuation of Performance Stock (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:to="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Share-based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:label="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 9 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:to="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:label="prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 10 - Accumulated Other Comprehensive Income (Loss) - Other Comprehensive Loss (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:to="prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:label="prlb_statement-statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 12 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:to="prlb_statement-statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-12-segment-reporting-income-from-operations-details" xlink:label="prlb_statement-statement-note-12-segment-reporting-income-from-operations-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-12-segment-reporting-income-from-operations-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 12 - Segment Reporting - Income From Operations (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-12-segment-reporting-income-from-operations-details" xlink:to="prlb_statement-statement-note-12-segment-reporting-income-from-operations-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" xlink:label="prlb_statement-statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 12 - Segment Reporting - Long-lived Assets by Geographic Region (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" xlink:to="prlb_statement-statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Option, Activity [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-12-segment-reporting-disaggregation-of-revenue-details" xlink:label="prlb_statement-statement-note-12-segment-reporting-disaggregation-of-revenue-details" xlink:type="locator"/>
    <link:label xlink:label="prlb_statement-statement-note-12-segment-reporting-disaggregation-of-revenue-details-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Note 12 - Segment Reporting - Disaggregation of Revenue (Details)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_statement-statement-note-12-segment-reporting-disaggregation-of-revenue-details" xlink:to="prlb_statement-statement-note-12-segment-reporting-disaggregation-of-revenue-details-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NotesToFinancialStatements" xlink:label="prlb_NotesToFinancialStatements" xlink:type="locator"/>
    <link:label xlink:label="prlb_NotesToFinancialStatements-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Notes To Financial Statements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_NotesToFinancialStatements" xlink:to="prlb_NotesToFinancialStatements-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Granted, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Granted, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:label xlink:label="prlb_NotesToFinancialStatementsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Notes To Financial Statements [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="prlb_NotesToFinancialStatementsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Restrictions lapsed, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Restrictions lapsed, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xml:lang="en-US">Forfeited, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Forfeited, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:to="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Restricted stock, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Restricted stock, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Forfeited (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:label="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Commercial Paper, Not Included with Cash and Cash Equivalents [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:to="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities" xlink:label="us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Proceeds from sales of marketable securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities" xlink:to="us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax</link:label>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Foreign currency translation adjustment</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Restricted stock (in shares)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Restricted stock (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:label="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other comprehensive income (loss) before reclassifications</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:to="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:label="us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_USGovernmentAgenciesDebtSecuritiesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">US Government Agencies Debt Securities [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:to="us-gaap_USGovernmentAgenciesDebtSecuritiesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:label="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent</link:label>
    <link:label xlink:label="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Amounts reclassified from accumulated other comprehensive loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:to="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:label="us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Proceeds from maturities of marketable securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:to="us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Granted (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CorporateDebtSecuritiesMember" xlink:label="us-gaap_CorporateDebtSecuritiesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CorporateDebtSecuritiesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Corporate Debt Securities [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CorporateDebtSecuritiesMember" xlink:to="us-gaap_CorporateDebtSecuritiesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Restrictions lapsed (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Nonvested Performance-based Units Activity [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:to="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Options exercisable, weighted-average exercise price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireOtherInvestments" xlink:label="us-gaap_PaymentsToAcquireOtherInvestments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquireOtherInvestments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToAcquireOtherInvestments</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireOtherInvestments-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Purchases of other assets and investments</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToAcquireOtherInvestments" xlink:to="us-gaap_PaymentsToAcquireOtherInvestments-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Options exercisable (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt" xlink:label="us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Purchases of marketable securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt" xlink:to="us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:label="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Financial Instruments [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:to="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Options outstanding, weighted-average exercise price (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Options outstanding, weighted-average exercise price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent" xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent" xlink:type="locator"/>
    <link:label xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent</link:label>
    <link:label xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Current contingent consideration</link:label>
    <link:label xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The amount of liability arising from an inherited contingency (as defined) which has been recognized as of the acquisition date, classified as current</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent" xlink:to="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Forfeited, weighted-average exercise price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinancialInstrumentAxis" xlink:label="us-gaap_FinancialInstrumentAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinancialInstrumentAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Financial Instrument [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_FinancialInstrumentAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Due after one year through five years</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:label="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill and Intangible Assets Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:to="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfGoodwillTextBlock" xlink:label="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfGoodwillTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Goodwill [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfGoodwillTextBlock" xlink:to="us-gaap_ScheduleOfGoodwillTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Granted, weighted-average exercise price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Exercised, weighted-average exercise price (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent" xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent</link:label>
    <link:label xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Long-term contingent consideration</link:label>
    <link:label xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The amount of liability arising from an inherited contingency (as defined) which has been recognized as of the acquisition date, classified as noncurrent.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent" xlink:to="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued compensation</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:to="us-gaap_EmployeeRelatedLiabilitiesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Due in one year or less</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccruedIncomeTaxesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income taxes payable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccruedIncomeTaxesCurrent" xlink:to="us-gaap_AccruedIncomeTaxesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountsPayableCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AccountsPayableCurrent</link:label>
    <link:label xlink:label="us-gaap_AccountsPayableCurrent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accounts payable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountsPayableCurrent" xlink:to="us-gaap_AccountsPayableCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Options outstanding (in shares)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Options outstanding (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:label="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Recognized Identified Assets Acquired and Liabilities Assumed [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:to="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PolicyTextBlockAbstract" xlink:label="us-gaap_PolicyTextBlockAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PolicyTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PolicyTextBlockAbstract</link:label>
    <link:label xlink:label="us-gaap_PolicyTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accounting Policies</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PolicyTextBlockAbstract" xlink:to="us-gaap_PolicyTextBlockAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TradeNamesMember" xlink:label="us-gaap_TradeNamesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TradeNamesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Trade Names [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TradeNamesMember" xlink:to="us-gaap_TradeNamesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Discount from Market Price, Offering Date</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price of Common Stock, Percent</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Employee stock options and other (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:to="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToAcquirePropertyPlantAndEquipment</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Purchases of property, equipment and other capital assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" xlink:label="prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Share-based Payment Award, Awards Other Than Stock Options, Valuation Assumptions [Table Text Block]</link:label>
    <link:label xlink:label="prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of the valuation assumptions of share-based payment awards other than stock options.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" xlink:to="prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod</link:label>
    <link:label xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Expiration Period (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NoncompeteAgreementsMember" xlink:label="us-gaap_NoncompeteAgreementsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NoncompeteAgreementsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Noncompete Agreements [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NoncompeteAgreementsMember" xlink:to="us-gaap_NoncompeteAgreementsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesCurrentAbstract" xlink:label="us-gaap_LiabilitiesCurrentAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesCurrentAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LiabilitiesCurrentAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:label="us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MarketingRelatedIntangibleAssetsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Marketing-Related Intangible Assets [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:to="us-gaap_MarketingRelatedIntangibleAssetsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Shares used to compute net income per share:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Assets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_Assets</link:label>
    <link:label xlink:label="us-gaap_Assets-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Assets" xlink:to="us-gaap_Assets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameAxis" xlink:label="us-gaap_PlanNameAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PlanNameAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Plan Name [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PlanNameAxis" xlink:to="us-gaap_PlanNameAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PlanNameDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Plan Name [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PlanNameDomain" xlink:to="us-gaap_PlanNameDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_OtherProductsMember" xlink:label="prlb_OtherProductsMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_OtherProductsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other Products [Member]</link:label>
    <link:label xlink:label="prlb_OtherProductsMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents other products.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_OtherProductsMember" xlink:to="prlb_OtherProductsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized</link:label>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1</link:label>
    <link:label xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CustomerRelationshipsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Customer Relationships [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CustomerRelationshipsMember" xlink:to="us-gaap_CustomerRelationshipsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentTextBlock" xlink:label="us-gaap_InvestmentTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InvestmentTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Investment [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InvestmentTextBlock" xlink:to="us-gaap_InvestmentTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:label="us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComputerSoftwareIntangibleAssetMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Computer Software, Intangible Asset [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:to="us-gaap_ComputerSoftwareIntangibleAssetMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:to="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finite-Lived Intangible Assets by Major Class [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finite-Lived Intangible Assets, Major Class Name [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Award Type [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:label xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Performance change, weighted-average grant date fair value (in dollars per share)</link:label>
    <link:label xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the weighted average grant date fair value per share in connection to a performance change related to equity instruments other than options.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:to="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:type="locator"/>
    <link:label xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Performance change (in shares)</link:label>
    <link:label xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the amount of shares related to a performance change related to equity instruments other than option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:to="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AwardTypeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Award Type [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_AwardTypeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Net income</link:label>
    <link:label xlink:label="us-gaap_NetIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net income</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetIncomeLoss" xlink:to="us-gaap_NetIncomeLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Accumulated Amortization</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Net</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total estimated amortization expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsGross" xlink:label="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Gross</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:to="us-gaap_FiniteLivedIntangibleAssetsGross-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RestrictedStockMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Restricted Stock [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RestrictedStockMember" xlink:to="us-gaap_RestrictedStockMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PerformanceSharesMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Performance Shares [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PerformanceSharesMember" xlink:to="us-gaap_PerformanceSharesMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EmployeeStockOptionMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Option [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EmployeeStockOptionMember" xlink:to="us-gaap_EmployeeStockOptionMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:label="us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillForeignCurrencyTranslationGainLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_GoodwillForeignCurrencyTranslationGainLoss</link:label>
    <link:label xlink:label="us-gaap_GoodwillForeignCurrencyTranslationGainLoss-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Foreign currency translation adjustments</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:to="us-gaap_GoodwillForeignCurrencyTranslationGainLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillPurchaseAccountingAdjustments" xlink:label="us-gaap_GoodwillPurchaseAccountingAdjustments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillPurchaseAccountingAdjustments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_GoodwillPurchaseAccountingAdjustments</link:label>
    <link:label xlink:label="us-gaap_GoodwillPurchaseAccountingAdjustments-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Goodwill, Purchase Accounting Adjustments</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillPurchaseAccountingAdjustments" xlink:to="us-gaap_GoodwillPurchaseAccountingAdjustments-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAcquiredDuringPeriod" xlink:label="us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GoodwillAcquiredDuringPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill acquired during the period</link:label>
    <link:label xlink:label="us-gaap_GoodwillAcquiredDuringPeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Goodwill, Acquired During Period</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GoodwillAcquiredDuringPeriod" xlink:to="us-gaap_GoodwillAcquiredDuringPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration" xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration" xlink:type="locator"/>
    <link:label xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration</link:label>
    <link:label xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Contingent Consideration</link:label>
    <link:label xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to contingent consideration in connection with a business combination for which the initial accounting was incomplete.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration" xlink:to="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationDisclosureTextBlock" xlink:label="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Combination Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:to="us-gaap_BusinessCombinationDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Property and equipment, net</link:label>
    <link:label xlink:label="us-gaap_PropertyPlantAndEquipmentNet-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Long-lived assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PropertyPlantAndEquipmentNet" xlink:to="us-gaap_PropertyPlantAndEquipmentNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Goodwill-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Goodwill</link:label>
    <link:label xlink:label="us-gaap_Goodwill-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Goodwill</link:label>
    <link:label xlink:label="us-gaap_Goodwill-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Goodwill</link:label>
    <link:label xlink:label="us-gaap_Goodwill-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Goodwill</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Goodwill" xlink:to="us-gaap_Goodwill-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BankTimeDepositsMember" xlink:label="us-gaap_BankTimeDepositsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BankTimeDepositsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Bank Time Deposits [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BankTimeDepositsMember" xlink:to="us-gaap_BankTimeDepositsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities" xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities" xlink:type="locator"/>
    <link:label xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities</link:label>
    <link:label xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Deferred Tax Liabilities</link:label>
    <link:label xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to deferred tax liabilities assumed in connection with a business combination for which the initial accounting was incomplete.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities" xlink:to="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid" xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid" xlink:type="locator"/>
    <link:label xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid</link:label>
    <link:label xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Cash Paid</link:label>
    <link:label xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to cash paid in connection with a business combination for which the initial accounting was incomplete.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid" xlink:to="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Investing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AvailableForSaleSecuritiesDebtSecurities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Marketable securities</link:label>
    <link:label xlink:label="us-gaap_AvailableForSaleSecuritiesDebtSecurities-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Fair Value</link:label>
    <link:label xlink:label="us-gaap_AvailableForSaleSecuritiesDebtSecurities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total marketable securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtSecurities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HeldToMaturitySecurities" xlink:label="us-gaap_HeldToMaturitySecurities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HeldToMaturitySecurities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Amortized Cost</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HeldToMaturitySecurities" xlink:to="us-gaap_HeldToMaturitySecurities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Net income per share:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareTextBlock" xlink:label="us-gaap_EarningsPerShareTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Earnings Per Share [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareTextBlock" xlink:to="us-gaap_EarningsPerShareTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInOtherOperatingLiabilities</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Accrued liabilities and other</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:to="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:label="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:to="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:type="locator"/>
    <link:label xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit</link:label>
    <link:label xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Percentage of Target Number Capable of Being Earned and Vesting, Lower Limit</link:label>
    <link:label xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The lower limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:to="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:type="locator"/>
    <link:label xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit</link:label>
    <link:label xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Percentage of Target Number Capable of Being Earned and Vesting, Upper Limit</link:label>
    <link:label xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The upper limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:to="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Provision for income taxes</link:label>
    <link:label xlink:label="us-gaap_IncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Income Tax Expense (Benefit), Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxExpenseBenefit" xlink:to="us-gaap_IncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounts payable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingExpenses-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OperatingExpenses</link:label>
    <link:label xlink:label="us-gaap_OperatingExpenses-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total operating expenses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingExpenses" xlink:to="us-gaap_OperatingExpenses-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GeneralAndAdministrativeExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">General and administrative</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GeneralAndAdministrativeExpense" xlink:to="us-gaap_GeneralAndAdministrativeExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash and cash equivalents</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss</link:label>
    <link:label xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Unrealized Losses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:to="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Unrealized Gains</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:to="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EmployeeStockPurchasePlanMember" xlink:label="prlb_EmployeeStockPurchasePlanMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_EmployeeStockPurchasePlanMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Employee Stock Purchase Plan [Member]</link:label>
    <link:label xlink:label="prlb_EmployeeStockPurchasePlanMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Information pertaining to the Employee Stock Purchase Plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EmployeeStockPurchasePlanMember" xlink:to="prlb_EmployeeStockPurchasePlanMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense" xlink:label="us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AllocatedShareBasedCompensationExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AllocatedShareBasedCompensationExpense</link:label>
    <link:label xlink:label="us-gaap_AllocatedShareBasedCompensationExpense-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Share-based Payment Arrangement, Expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AllocatedShareBasedCompensationExpense" xlink:to="us-gaap_AllocatedShareBasedCompensationExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" xlink:type="locator"/>
    <link:label xlink:label="dei_AmendmentFlag-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Amendment Flag</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_AmendmentFlag" xlink:to="dei_AmendmentFlag-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Comprehensive Income (net of tax)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTaxAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ComprehensiveIncomeNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Comprehensive income</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ComprehensiveIncomeNetOfTax" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" xlink:type="locator"/>
    <link:label xlink:label="dei_CityAreaCode-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">City Area Code</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_CityAreaCode" xlink:to="dei_CityAreaCode-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, shares outstanding (in shares)</link:label>
    <link:label xlink:label="us-gaap_CommonStockSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Balance (in shares)</link:label>
    <link:label xlink:label="us-gaap_CommonStockSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Balance (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockSharesOutstanding" xlink:to="us-gaap_CommonStockSharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour" xlink:label="prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour" xlink:type="locator"/>
    <link:label xlink:label="prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour</link:label>
    <link:label xlink:label="prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Thereafter</link:label>
    <link:label xlink:label="prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of amortization for asset, excluding financial asset and goodwill, lacking physical substance with finite life expected to be recognized after fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour" xlink:to="prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_Acquired3dHubsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Acquired 3D Hubs [Member]</link:label>
    <link:label xlink:label="prlb_Acquired3dHubsMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents acquired 3D Hubs.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_Acquired3dHubsMember" xlink:to="prlb_Acquired3dHubsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" xlink:type="locator"/>
    <link:label xlink:label="dei_CurrentFiscalYearEndDate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current Fiscal Year End Date</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_CurrentFiscalYearEndDate" xlink:to="dei_CurrentFiscalYearEndDate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Prepaid expenses and other</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss" xlink:label="us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss</link:label>
    <link:label xlink:label="us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Realized gain on available-sale-securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss" xlink:to="us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentFiscalPeriodFocus-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Fiscal Period Focus</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentFiscalPeriodFocus" xlink:to="dei_DocumentFiscalPeriodFocus-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentFiscalYearFocus-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Fiscal Year Focus</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentFiscalYearFocus" xlink:to="dei_DocumentFiscalYearFocus-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentPeriodEndDate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Period End Date</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentPeriodEndDate" xlink:to="dei_DocumentPeriodEndDate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityFileNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity File Number</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityFileNumber" xlink:to="dei_EntityFileNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityEmergingGrowthCompany-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Emerging Growth Company</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityEmergingGrowthCompany" xlink:to="dei_EntityEmergingGrowthCompany-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentType" xlink:label="dei_DocumentType" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentType-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Type</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentType" xlink:to="dei_DocumentType-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" xlink:type="locator"/>
    <link:label xlink:label="dei_EntitySmallBusiness-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Small Business</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntitySmallBusiness" xlink:to="dei_EntitySmallBusiness-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityShellCompany-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Shell Company</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityShellCompany" xlink:to="dei_EntityShellCompany-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentInformationLineItems" xlink:label="dei_DocumentInformationLineItems" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentInformationLineItems-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Information [Line Items]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentInformationLineItems-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentInformationTable" xlink:label="dei_DocumentInformationTable" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentInformationTable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Information [Table]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentInformationTable" xlink:to="dei_DocumentInformationTable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityFilerCategory-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Filer Category</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityFilerCategory" xlink:to="dei_EntityFilerCategory-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityCurrentReportingStatus-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Current Reporting Status</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCurrentReportingStatus" xlink:to="dei_EntityCurrentReportingStatus-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInAccountsReceivable</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Accounts receivable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Stock-based compensation expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:to="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityTaxIdentificationNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Tax Identification Number</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityTaxIdentificationNumber" xlink:to="dei_EntityTaxIdentificationNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityCentralIndexKey-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Central Index Key</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCentralIndexKey" xlink:to="dei_EntityCentralIndexKey-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityRegistrantName-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Registrant Name</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityRegistrantName" xlink:to="dei_EntityRegistrantName-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityDomain" xlink:to="dei_EntityDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:label xlink:label="dei_LegalEntityAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Legal Entity [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_LegalEntityAxis" xlink:to="dei_LegalEntityAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressAddressLine1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, Address Line One</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressAddressLine1" xlink:to="dei_EntityAddressAddressLine1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AmortizationOfIntangibleAssets" xlink:label="us-gaap_AmortizationOfIntangibleAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AmortizationOfIntangibleAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AmortizationOfIntangibleAssets</link:label>
    <link:label xlink:label="us-gaap_AmortizationOfIntangibleAssets-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Amortization of Intangible Assets, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AmortizationOfIntangibleAssets" xlink:to="us-gaap_AmortizationOfIntangibleAssets-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressCityOrTown-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, City or Town</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressCityOrTown" xlink:to="dei_EntityAddressCityOrTown-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressPostalZipCode-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, Postal Zip Code</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressPostalZipCode" xlink:to="dei_EntityAddressPostalZipCode-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityAddressStateOrProvince-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Address, State or Province</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityAddressStateOrProvince" xlink:to="dei_EntityAddressStateOrProvince-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_LongtermIncentivePlan2012Member" xlink:label="prlb_LongtermIncentivePlan2012Member" xlink:type="locator"/>
    <link:label xlink:label="prlb_LongtermIncentivePlan2012Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-Term Incentive Plan 2012 [Member]</link:label>
    <link:label xlink:label="prlb_LongtermIncentivePlan2012Member-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Information pertaining to the 2012 Long-Term Incentive Plan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_LongtermIncentivePlan2012Member" xlink:to="prlb_LongtermIncentivePlan2012Member-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityCommonStockSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Common Stock, Shares Outstanding</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityCommonStockSharesOutstanding" xlink:to="dei_EntityCommonStockSharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockRepurchasedAndRetiredDuringPeriodValue</link:label>
    <link:label xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Repurchases of common stock</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockRepurchasedAndRetiredDuringPeriodShares</link:label>
    <link:label xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Repurchases of common stock (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInInventories-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncreaseDecreaseInInventories</link:label>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInInventories-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Inventories</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInInventories" xlink:to="us-gaap_IncreaseDecreaseInInventories-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_TradingSymbol" xlink:label="dei_TradingSymbol" xlink:type="locator"/>
    <link:label xlink:label="dei_TradingSymbol-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Trading Symbol</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_TradingSymbol" xlink:to="dei_TradingSymbol-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:to="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:label="us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodSharesAcquisitions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common shares issued for Hubs acquisition (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:to="us-gaap_StockIssuedDuringPeriodSharesAcquisitions-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" xlink:type="locator"/>
    <link:label xlink:label="dei_LocalPhoneNumber-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Local Phone Number</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_LocalPhoneNumber" xlink:to="dei_LocalPhoneNumber-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:label="us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodValueAcquisitions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common shares issued for Hubs acquisition</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:to="us-gaap_StockIssuedDuringPeriodValueAcquisitions-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised</link:label>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Exercised (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:to="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_TableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_TableTextBlock</link:label>
    <link:label xlink:label="us-gaap_TableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Notes Tables</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_TableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common shares issued on exercise of options and other, net of shares withheld for tax obligations</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:to="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_SheetMetalMember" xlink:label="prlb_SheetMetalMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_SheetMetalMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Sheet Metal [Member]</link:label>
    <link:label xlink:label="prlb_SheetMetalMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the information pertaining to sheet metal.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_SheetMetalMember" xlink:to="prlb_SheetMetalMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Granted (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Forfeited (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SellingAndMarketingExpense" xlink:label="us-gaap_SellingAndMarketingExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SellingAndMarketingExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Marketing and sales</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SellingAndMarketingExpense" xlink:to="us-gaap_SellingAndMarketingExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HeldToMaturitySecuritiesFairValue" xlink:label="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_HeldToMaturitySecuritiesFairValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:to="us-gaap_HeldToMaturitySecuritiesFairValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesAndStockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LiabilitiesAndStockholdersEquity</link:label>
    <link:label xlink:label="us-gaap_LiabilitiesAndStockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total liabilities and shareholders' equity</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="us-gaap_LiabilitiesAndStockholdersEquity-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/country/2021/country-2021.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:label xlink:label="country_US-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">UNITED STATES</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="country_US" xlink:to="country_US-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retained earnings</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ResearchAndDevelopmentExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Research and development</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ResearchAndDevelopmentExpense" xlink:to="us-gaap_ResearchAndDevelopmentExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accumulated other comprehensive loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MoneyMarketFundsMember" xlink:label="us-gaap_MoneyMarketFundsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MoneyMarketFundsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Money Market Funds [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MoneyMarketFundsMember" xlink:to="us-gaap_MoneyMarketFundsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAxis" xlink:label="us-gaap_CashAndCashEquivalentsAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash and Cash Equivalents [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashAndCashEquivalentsAxis" xlink:to="us-gaap_CashAndCashEquivalentsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:label="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cash and Cash Equivalents [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:to="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Changes in operating assets and liabilities:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisclosureTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_DisclosureTextBlockAbstract</link:label>
    <link:label xlink:label="us-gaap_DisclosureTextBlockAbstract-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Notes to Financial Statements</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureTextBlockAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherNoncashIncomeExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OtherNoncashIncomeExpense</link:label>
    <link:label xlink:label="us-gaap_OtherNoncashIncomeExpense-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Other</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherNoncashIncomeExpense" xlink:to="us-gaap_OtherNoncashIncomeExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryDisclosureTextBlock" xlink:label="us-gaap_InventoryDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Inventory Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryDisclosureTextBlock" xlink:to="us-gaap_InventoryDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-term operating lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:label="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfInventoryCurrentTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Inventory, Current [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:to="us-gaap_ScheduleOfInventoryCurrentTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current operating lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseLiabilityCurrent" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherIntangibleAssetsNet" xlink:label="us-gaap_OtherIntangibleAssetsNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherIntangibleAssetsNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other intangible assets, net</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherIntangibleAssetsNet" xlink:to="us-gaap_OtherIntangibleAssetsNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current finance lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityCurrent" xlink:to="us-gaap_FinanceLeaseLiabilityCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-term finance lease liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:to="us-gaap_FinanceLeaseLiabilityNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingLeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating lease assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingLeaseRightOfUseAsset" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeasePrincipalPayments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FinanceLeasePrincipalPayments</link:label>
    <link:label xlink:label="us-gaap_FinanceLeasePrincipalPayments-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Principal repayments of finance lease obligations</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeasePrincipalPayments" xlink:to="us-gaap_FinanceLeasePrincipalPayments-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Deferred taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefit-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Remaining 2021</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FinanceLeaseRightOfUseAsset-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Finance lease assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FinanceLeaseRightOfUseAsset" xlink:to="us-gaap_FinanceLeaseRightOfUseAsset-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2023</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2024</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2025</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock" xlink:label="us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Debt Securities, Available-for-sale [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock" xlink:to="us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:label="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:to="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">2022</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherAssetsNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other long-term assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherAssetsNoncurrent" xlink:to="us-gaap_OtherAssetsNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensation</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Stock-based compensation expense</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensation" xlink:to="us-gaap_ShareBasedCompensation-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:label="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Weighted average useful life remaining (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:to="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Useful Life (Year)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:to="us-gaap_FiniteLivedIntangibleAssetUsefulLife-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss" xlink:label="us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss</link:label>
    <link:label xlink:label="us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Finite Lived Intangible Assets, Foreign Currency Translation Gain (Loss)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss" xlink:to="us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingExpensesAbstract" xlink:label="us-gaap_OperatingExpensesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingExpensesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating expenses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingExpensesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsFairValueDisclosure" xlink:label="us-gaap_AssetsFairValueDisclosure" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetsFairValueDisclosure-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AssetsFairValueDisclosure</link:label>
    <link:label xlink:label="us-gaap_AssetsFairValueDisclosure-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetsFairValueDisclosure" xlink:to="us-gaap_AssetsFairValueDisclosure-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments</link:label>
    <link:label xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Amortization of marketable securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:to="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:label="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Finite-Lived Intangible Assets [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:to="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesFairValueDisclosure" xlink:label="us-gaap_LiabilitiesFairValueDisclosure" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LiabilitiesFairValueDisclosure-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_LiabilitiesFairValueDisclosure</link:label>
    <link:label xlink:label="us-gaap_LiabilitiesFairValueDisclosure-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LiabilitiesFairValueDisclosure" xlink:to="us-gaap_LiabilitiesFairValueDisclosure-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MarketableSecuritiesNoncurrent" xlink:label="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MarketableSecuritiesNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-term marketable securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MarketableSecuritiesNoncurrent" xlink:to="us-gaap_MarketableSecuritiesNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DepreciationDepletionAndAmortization-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Depreciation and amortization</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DepreciationDepletionAndAmortization" xlink:to="us-gaap_DepreciationDepletionAndAmortization-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_InjectionMoldingProtomoldMember" xlink:label="prlb_InjectionMoldingProtomoldMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_InjectionMoldingProtomoldMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Injection Molding (Protomold) [Member]</link:label>
    <link:label xlink:label="prlb_InjectionMoldingProtomoldMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the Injection Molding (Protomold) product.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_InjectionMoldingProtomoldMember" xlink:to="prlb_InjectionMoldingProtomoldMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetsCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AssetsCurrent</link:label>
    <link:label xlink:label="us-gaap_AssetsCurrent-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total current assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetsCurrent" xlink:to="us-gaap_AssetsCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsFairValueDisclosure" xlink:label="us-gaap_CashAndCashEquivalentsFairValueDisclosure" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsFairValueDisclosure-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CashAndCashEquivalentsFairValueDisclosure</link:label>
    <link:label xlink:label="us-gaap_CashAndCashEquivalentsFairValueDisclosure-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Cash and cash equivalents</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashAndCashEquivalentsFairValueDisclosure" xlink:to="us-gaap_CashAndCashEquivalentsFairValueDisclosure-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_ThreeDPrintingFinelineMember" xlink:label="prlb_ThreeDPrintingFinelineMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_ThreeDPrintingFinelineMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">3D Printing (Fineline) [Member]</link:label>
    <link:label xlink:label="prlb_ThreeDPrintingFinelineMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the 3D Printing (Fineline) product.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ThreeDPrintingFinelineMember" xlink:to="prlb_ThreeDPrintingFinelineMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_CNCMachiningFirstcutMember" xlink:label="prlb_CNCMachiningFirstcutMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_CNCMachiningFirstcutMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">CNC Machining (Firstcut) [Member]</link:label>
    <link:label xlink:label="prlb_CNCMachiningFirstcutMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Represents the CNC Machining (Firstcut) product.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_CNCMachiningFirstcutMember" xlink:to="prlb_CNCMachiningFirstcutMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxesReceivable" xlink:label="us-gaap_IncomeTaxesReceivable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeTaxesReceivable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income taxes receivable</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeTaxesReceivable" xlink:to="us-gaap_IncomeTaxesReceivable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair value of contingent consideration</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Contingent Consideration Arrangements, Change in Amount of Contingent Consideration, Liability</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:to="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 27,761,063 and 26,776,796 shares as of June 30, 2021 and December 31, 2020, respectively</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockValue" xlink:to="us-gaap_CommonStockValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis" xlink:label="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueByMeasurementFrequencyAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Measurement Frequency [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:to="us-gaap_FairValueByMeasurementFrequencyAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Adjustments to reconcile net income to net cash provided by operating activities:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain" xlink:label="us-gaap_FairValueMeasurementFrequencyDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueMeasurementFrequencyDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Measurement Frequency [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueMeasurementFrequencyDomain" xlink:to="us-gaap_FairValueMeasurementFrequencyDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember" xlink:label="us-gaap_FairValueMeasurementsRecurringMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueMeasurementsRecurringMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value, Recurring [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueMeasurementsRecurringMember" xlink:to="us-gaap_FairValueMeasurementsRecurringMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesAuthorized" xlink:label="us-gaap_CommonStockSharesAuthorized" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockSharesAuthorized-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, shares authorized (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockSharesAuthorized" xlink:to="us-gaap_CommonStockSharesAuthorized-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesIssued" xlink:label="us-gaap_CommonStockSharesIssued" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockSharesIssued-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, shares issued (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockSharesIssued" xlink:to="us-gaap_CommonStockSharesIssued-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockParOrStatedValuePerShare-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common stock, par value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockParOrStatedValuePerShare" xlink:to="us-gaap_CommonStockParOrStatedValuePerShare-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:label xlink:label="srt_RangeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statistical Measurement [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_RangeMember" xlink:to="srt_RangeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:label xlink:label="srt_MaximumMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Maximum [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_MaximumMember" xlink:to="srt_MaximumMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:label xlink:label="srt_MinimumMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Minimum [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_MinimumMember" xlink:to="srt_MinimumMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ProductOrServiceAxis" xlink:label="srt_ProductOrServiceAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_ProductOrServiceAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Product and Service [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ProductOrServiceAxis" xlink:to="srt_ProductOrServiceAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_ProductsAndServicesDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Product and Service [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ProductsAndServicesDomain" xlink:to="srt_ProductsAndServicesDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_RangeAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statistical Measurement [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_RangeAxis" xlink:to="srt_RangeAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PreferredStockValue-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of each of June 30, 2021 and December 31, 2020</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PreferredStockValue" xlink:to="us-gaap_PreferredStockValue-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockSharesIssued" xlink:label="us-gaap_PreferredStockSharesIssued" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PreferredStockSharesIssued-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Preferred stock, shares issued (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PreferredStockSharesIssued" xlink:to="us-gaap_PreferredStockSharesIssued-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_StatementGeographicalAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Geographical [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_StatementGeographicalAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_EuropeSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Europe Segment [Member]</link:label>
    <link:label xlink:label="prlb_EuropeSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Operating segment for Europe</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EuropeSegmentMember" xlink:to="prlb_EuropeSegmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_SegmentGeographicalDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Geographical [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_SegmentGeographicalDomain" xlink:to="srt_SegmentGeographicalDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:label xlink:label="srt_EuropeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Europe [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_EuropeMember" xlink:to="srt_EuropeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockSharesAuthorized" xlink:label="us-gaap_PreferredStockSharesAuthorized" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PreferredStockSharesAuthorized-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Preferred stock, shares authorized (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PreferredStockSharesAuthorized" xlink:to="us-gaap_PreferredStockSharesAuthorized-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_UnitedStatesSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">United States Segment [Member]</link:label>
    <link:label xlink:label="prlb_UnitedStatesSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Operating segment for United States.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_UnitedStatesSegmentMember" xlink:to="prlb_UnitedStatesSegmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Inventory</link:label>
    <link:label xlink:label="us-gaap_InventoryNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Inventory, net of allowance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryNet" xlink:to="us-gaap_InventoryNet-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_JapanSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Japan Segment [Member]</link:label>
    <link:label xlink:label="prlb_JapanSegmentMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Operating segment for Japan.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_JapanSegmentMember" xlink:to="prlb_JapanSegmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockParOrStatedValuePerShare" xlink:label="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PreferredStockParOrStatedValuePerShare-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Preferred stock, par value (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:to="us-gaap_PreferredStockParOrStatedValuePerShare-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryValuationReserves" xlink:label="us-gaap_InventoryValuationReserves" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryValuationReserves-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_InventoryValuationReserves</link:label>
    <link:label xlink:label="us-gaap_InventoryValuationReserves-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Allowance for obsolescence</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryValuationReserves" xlink:to="us-gaap_InventoryValuationReserves-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel3Member" xlink:label="us-gaap_FairValueInputsLevel3Member" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueInputsLevel3Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value, Inputs, Level 3 [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueInputsLevel3Member" xlink:to="us-gaap_FairValueInputsLevel3Member-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value Hierarchy and NAV [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:to="us-gaap_FairValueMeasurementsFairValueHierarchyDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InventoryGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Total inventory</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InventoryGross" xlink:to="us-gaap_InventoryGross-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel1Member" xlink:label="us-gaap_FairValueInputsLevel1Member" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueInputsLevel1Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value, Inputs, Level 1 [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueInputsLevel1Member" xlink:to="us-gaap_FairValueInputsLevel1Member-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel2Member" xlink:label="us-gaap_FairValueInputsLevel2Member" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueInputsLevel2Member-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value, Inputs, Level 2 [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueInputsLevel2Member" xlink:to="us-gaap_FairValueInputsLevel2Member-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:label="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueByFairValueHierarchyLevelAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value Hierarchy and NAV [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueByFairValueHierarchyLevelAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementLineItems-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement [Line Items]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StatementLineItems-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Allowance for doubtful accounts</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountsReceivableNetCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounts receivable, net of allowance for doubtful accounts of $1,997 and $1,781 as of June 30, 2021 and December 31, 2020, respectively</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountsReceivableNetCurrent" xlink:to="us-gaap_AccountsReceivableNetCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember" xlink:label="us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">AOCI, Accumulated Gain (Loss), Debt Securities, Available-for-sale, Parent [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember" xlink:to="us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedTranslationAdjustmentMember" xlink:label="us-gaap_AccumulatedTranslationAdjustmentMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedTranslationAdjustmentMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accumulated Foreign Currency Adjustment Attributable to Parent [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedTranslationAdjustmentMember" xlink:to="us-gaap_AccumulatedTranslationAdjustmentMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenuesAbstract" xlink:label="us-gaap_RevenuesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenuesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statements of Operations:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenuesAbstract" xlink:to="us-gaap_RevenuesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MarketableSecuritiesCurrent" xlink:label="us-gaap_MarketableSecuritiesCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_MarketableSecuritiesCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Short-term marketable securities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_MarketableSecuritiesCurrent" xlink:to="us-gaap_MarketableSecuritiesCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Additional paid-in capital</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:to="us-gaap_AdditionalPaidInCapitalCommonStock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">AOCI Attributable to Parent [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquityAbstract" xlink:label="us-gaap_StockholdersEquityAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockholdersEquityAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Shareholders' equity</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_StockholdersEquityAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherNonoperatingIncomeExpense-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other income (loss), net</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherNonoperatingIncomeExpense" xlink:to="us-gaap_OtherNonoperatingIncomeExpense-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentReportingDisclosureTextBlock" xlink:label="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SegmentReportingDisclosureTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Segment Reporting Disclosure [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SegmentReportingDisclosureTextBlock" xlink:to="us-gaap_SegmentReportingDisclosureTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsCurrentAbstract" xlink:label="us-gaap_AssetsCurrentAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AssetsCurrentAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Current assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AssetsCurrentAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueDisclosuresTextBlock" xlink:label="us-gaap_FairValueDisclosuresTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueDisclosuresTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value Disclosures [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueDisclosuresTextBlock" xlink:to="us-gaap_FairValueDisclosuresTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations</link:label>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Cash and cash equivalents, beginning of period</link:label>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Cash and cash equivalents, end of period</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Effect of exchange rate changes on cash and cash equivalents</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:to="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect</link:label>
    <link:label xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net decrease in cash and cash equivalents</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_Liabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_Liabilities</link:label>
    <link:label xlink:label="us-gaap_Liabilities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_Liabilities" xlink:to="us-gaap_Liabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NetCashProvidedByUsedInFinancingActivities</link:label>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net cash used in financing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income from operations</link:label>
    <link:label xlink:label="us-gaap_OperatingIncomeLoss-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Income from operations</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingIncomeLoss" xlink:to="us-gaap_OperatingIncomeLoss-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NetCashProvidedByUsedInOperatingActivities</link:label>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net cash provided by operating activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Prepaid expenses and other current assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_NetCashProvidedByUsedInInvestingActivities</link:label>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net cash used in investing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_GrossProfit-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_GrossProfit</link:label>
    <link:label xlink:label="us-gaap_GrossProfit-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Gross profit</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_GrossProfit" xlink:to="us-gaap_GrossProfit-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:label="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income from Operations by Geographic Area [Table Text Block]</link:label>
    <link:label xlink:label="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Tabular disclosure of income from operations by geographic area.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:to="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CostOfGoodsAndServicesSold-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Cost of revenue</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CostOfGoodsAndServicesSold" xlink:to="us-gaap_CostOfGoodsAndServicesSold-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_ConsolidationItemsDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Consolidation Items [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ConsolidationItemsDomain" xlink:to="srt_ConsolidationItemsDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-term deferred tax liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_ConsolidationItemsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Consolidation Items [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation</link:label>
    <link:label xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Purchases of shares withheld for tax obligations</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:to="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsForRepurchaseOfCommonStock</link:label>
    <link:label xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Repurchases of common stock</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:label xlink:label="srt_ScenarioUnspecifiedDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Scenario [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ScenarioUnspecifiedDomain" xlink:to="srt_ScenarioUnspecifiedDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioForecastMember" xlink:label="srt_ScenarioForecastMember" xlink:type="locator"/>
    <link:label xlink:label="srt_ScenarioForecastMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Forecast [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_ScenarioForecastMember" xlink:to="srt_ScenarioForecastMember-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:label="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:type="locator"/>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod</link:label>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Effective Income Tax Rate Continuing Operations Increase (Decrease) During the Period</link:label>
    <link:label xlink:label="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">The increase (decrease) during the period in percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:to="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RetainedEarningsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Retained Earnings [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RetainedEarningsMember" xlink:to="us-gaap_RetainedEarningsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:label xlink:label="srt_StatementScenarioAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Scenario [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_StatementScenarioAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:label="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Proceeds from exercises of stock options</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:to="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdditionalPaidInCapitalMember" xlink:label="us-gaap_AdditionalPaidInCapitalMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AdditionalPaidInCapitalMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Additional Paid-in Capital [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AdditionalPaidInCapitalMember" xlink:to="us-gaap_AdditionalPaidInCapitalMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockMember" xlink:label="us-gaap_CommonStockMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CommonStockMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Common Stock [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CommonStockMember" xlink:to="us-gaap_CommonStockMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementEquityComponentsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Equity Components [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_StatementEquityComponentsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EquityComponentDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Equity Component [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EquityComponentDomain" xlink:to="us-gaap_EquityComponentDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest</link:label>
    <link:label xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Income before income taxes</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:label="us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisclosureOfReclassificationAmountTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Disclosure of Reclassification Amount [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:to="us-gaap_DisclosureOfReclassificationAmountTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Disaggregation of Revenue [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:to="us-gaap_DisaggregationOfRevenueTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentQuarterlyReport" xlink:label="dei_DocumentQuarterlyReport" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentQuarterlyReport-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Quarterly Report</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentQuarterlyReport" xlink:to="dei_DocumentQuarterlyReport-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityIncorporationStateCountryCode-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Incorporation, State or Country Code</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityIncorporationStateCountryCode" xlink:to="dei_EntityIncorporationStateCountryCode-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefits-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_UnrecognizedTaxBenefits</link:label>
    <link:label xlink:label="us-gaap_UnrecognizedTaxBenefits-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Unrecognized Tax Benefits, Ending Balance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_UnrecognizedTaxBenefits" xlink:to="us-gaap_UnrecognizedTaxBenefits-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountingPoliciesAbstract" xlink:label="us-gaap_AccountingPoliciesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccountingPoliciesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accounting Policies [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccountingPoliciesAbstract" xlink:to="us-gaap_AccountingPoliciesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SignificantAccountingPoliciesTextBlock" xlink:label="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SignificantAccountingPoliciesTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Significant Accounting Policies [Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:to="us-gaap_SignificantAccountingPoliciesTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" xlink:type="locator"/>
    <link:label xlink:label="dei_DocumentTransitionReport-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Document Transition Report</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_DocumentTransitionReport" xlink:to="dei_DocumentTransitionReport-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" xlink:type="locator"/>
    <link:label xlink:label="dei_EntityInteractiveDataCurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Entity Interactive Data Current</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_EntityInteractiveDataCurrent" xlink:to="dei_EntityInteractiveDataCurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" xlink:type="locator"/>
    <link:label xlink:label="dei_SecurityExchangeName-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Security Exchange Name</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_SecurityExchangeName" xlink:to="dei_SecurityExchangeName-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" xlink:type="locator"/>
    <link:label xlink:label="dei_Security12bTitle-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Title of 12(b) Security</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="dei_Security12bTitle" xlink:to="dei_Security12bTitle-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:label="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AccruedLiabilitiesAndOtherLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Accrued liabilities and other</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:to="us-gaap_AccruedLiabilitiesAndOtherLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementBusinessSegmentsAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Segments [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_StatementBusinessSegmentsAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_SegmentDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Segments [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_SegmentDomain" xlink:to="us-gaap_SegmentDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Diluted (in shares)</link:label>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Diluted - weighted-average shares outstanding: (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByAssetClassAxis" xlink:label="us-gaap_FairValueByAssetClassAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueByAssetClassAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Asset Class [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueByAssetClassAxis" xlink:to="us-gaap_FairValueByAssetClassAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain" xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Asset Class [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain" xlink:to="us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementTable-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement [Table]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementTable-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfFinancialPositionAbstract" xlink:label="us-gaap_StatementOfFinancialPositionAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementOfFinancialPositionAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Financial Position [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementOfFinancialPositionAbstract" xlink:to="us-gaap_StatementOfFinancialPositionAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareDiluted-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Diluted (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_EarningsPerShareDiluted-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Diluted (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareDiluted" xlink:to="us-gaap_EarningsPerShareDiluted-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Basic (in shares)</link:label>
    <link:label xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Basic - weighted-average shares outstanding: (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EffectiveIncomeTaxRateContinuingOperations</link:label>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Percent, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Acquisition [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EarningsPerShareBasic-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Basic (in dollars per share)</link:label>
    <link:label xlink:label="us-gaap_EarningsPerShareBasic-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Basic (in dollars per share)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EarningsPerShareBasic" xlink:to="us-gaap_EarningsPerShareBasic-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Business Acquisition, Acquiree [Domain]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfCashFlowsAbstract" xlink:label="us-gaap_StatementOfCashFlowsAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementOfCashFlowsAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Cash Flows [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementOfCashFlowsAbstract" xlink:to="us-gaap_StatementOfCashFlowsAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Contingent Consideration Arrangements, Range of Outcomes, Value, High</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:to="us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_ESPPMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">ESPP [Member]</link:label>
    <link:label xlink:label="prlb_ESPPMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">ESPP [member</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_ESPPMember" xlink:to="prlb_ESPPMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfStockholdersEquityAbstract" xlink:label="us-gaap_StatementOfStockholdersEquityAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementOfStockholdersEquityAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Statement of Stockholders' Equity [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementOfStockholdersEquityAbstract" xlink:to="us-gaap_StatementOfStockholdersEquityAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementAbstract" xlink:label="us-gaap_IncomeStatementAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_IncomeStatementAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Income Statement [Abstract]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_IncomeStatementAbstract" xlink:to="us-gaap_IncomeStatementAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent</link:label>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net current-period other comprehensive income (loss)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:label="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Revenue from External Customers by Geographic Areas [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:to="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiability-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Contingent consideration</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiability-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Contingent Consideration, Liability, Total</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:to="us-gaap_BusinessCombinationContingentConsiderationLiability-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:label="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-lived Assets by Geographic Areas [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:to="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_SoftwarePlatformMember" xlink:label="prlb_SoftwarePlatformMember" xlink:type="locator"/>
    <link:label xlink:label="prlb_SoftwarePlatformMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Software Platform [Member]</link:label>
    <link:label xlink:label="prlb_SoftwarePlatformMember-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Information pertaining to software platform.</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_SoftwarePlatformMember" xlink:to="prlb_SoftwarePlatformMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" xlink:label="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued</link:label>
    <link:label xlink:label="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Acquisition, Equity Interest Issued or Issuable, Number of Shares (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" xlink:to="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued-label" xlink:type="arc"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" xlink:type="locator"/>
    <link:label xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal</link:label>
    <link:label xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total assets acquired</link:label>
    <link:label xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal-label" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xml:lang="en-US">Amount of assets acquired including goodwill at the acquisition date</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" xlink:to="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:label="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Investments Classified by Contractual Maturity Date [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:to="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles" xlink:label="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Intangibles</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles" xlink:to="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent" xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Long-term contingent consideration</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent" xlink:to="us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Fair Value, Assets Measured on Recurring Basis [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:to="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Financing activities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate</link:label>
    <link:label xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherLiabilitiesNoncurrent-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other long-term liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherLiabilitiesNoncurrent" xlink:to="us-gaap_OtherLiabilitiesNoncurrent-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net assets acquired</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_StockholdersEquity</link:label>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total shareholders' equity</link:label>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Balance</link:label>
    <link:label xlink:label="us-gaap_StockholdersEquity-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Balance</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StockholdersEquity" xlink:to="us-gaap_StockholdersEquity-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Total liabilities assumed</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Other comprehensive loss</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Payments to Acquire Businesses, Net of Cash Acquired, Total</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-label" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xml:lang="en-US">Net cash consideration</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-label" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xml:lang="en-US">Cash used for acquisitions, net of cash acquired</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Other long-term liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Current liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementClassOfStockAxis" xlink:label="us-gaap_StatementClassOfStockAxis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_StatementClassOfStockAxis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Class of Stock [Axis]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_StatementClassOfStockAxis" xlink:to="us-gaap_StatementClassOfStockAxis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Long-term deferred tax liabilities</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAcquiredFromAcquisition" xlink:label="us-gaap_CashAcquiredFromAcquisition" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_CashAcquiredFromAcquisition-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_CashAcquiredFromAcquisition</link:label>
    <link:label xlink:label="us-gaap_CashAcquiredFromAcquisition-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Cash acquired</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_CashAcquiredFromAcquisition" xlink:to="us-gaap_CashAcquiredFromAcquisition-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:to="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross" xlink:label="us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesGross-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_PaymentsToAcquireBusinessesGross</link:label>
    <link:label xlink:label="us-gaap_PaymentsToAcquireBusinessesGross-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Payments to Acquire Businesses, Gross</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_PaymentsToAcquireBusinessesGross" xlink:to="us-gaap_PaymentsToAcquireBusinessesGross-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:label="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Comprehensive Income (Loss) [Table Text Block]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:to="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax</link:label>
    <link:label xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax-label" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xml:lang="en-US">Unrealized Losses</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:to="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Liabilities assumed:</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax</link:label>
    <link:label xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Unrealized Gains</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:to="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-label" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xml:lang="en-US">Performance stock (in shares)</link:label>
    <link:label xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-label" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xml:lang="en-US">Performance stock (in shares)</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_OperatingSegmentsMember-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">Operating Segments [Member]</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_OperatingSegmentsMember" xlink:to="us-gaap_OperatingSegmentsMember-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis" xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis</link:label>
    <link:label xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Amortized Cost</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis" xlink:to="us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis-label" xlink:type="arc"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:type="locator"/>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets-label" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xml:lang="en-US">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets</link:label>
    <link:label xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets-label" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xml:lang="en-US">Other long-term assets</link:label>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets-label" xlink:type="arc"/>
  </link:labelLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.PRE
<SEQUENCE>9
<FILENAME>prlb-20210630_pre.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION PRESENTATION LINKBASE
<TEXT>
<XBRL>
<?xml version="1.0" encoding="US-ASCII" standalone="no"?>
<!--Generated by ThunderDome XBRL - 04:54PM UTC 2021-08-03--><link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting" xlink:href="prlb-20210630.xsd#statement-note-12-segment-reporting" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentReportingDisclosureTextBlock" xlink:label="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss" xlink:href="prlb-20210630.xsd#statement-note-10-accumulated-other-comprehensive-income-loss" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:label="us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureOfReclassificationAmountTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-8-inventory" xlink:href="prlb-20210630.xsd#statement-note-8-inventory" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-8-inventory" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryDisclosureTextBlock" xlink:label="us-gaap_InventoryDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_InventoryDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities" xlink:href="prlb-20210630.xsd#statement-note-7-marketable-securities" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentTextBlock" xlink:label="us-gaap_InvestmentTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_InvestmentTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share" xlink:href="prlb-20210630.xsd#statement-note-3-net-income-per-common-share" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareTextBlock" xlink:label="us-gaap_EarningsPerShareTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_EarningsPerShareTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-2-recent-accounting-pronouncements" xlink:href="prlb-20210630.xsd#statement-note-2-recent-accounting-pronouncements" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-2-recent-accounting-pronouncements" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SignificantAccountingPoliciesTextBlock" xlink:label="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-1-basis-of-presentation" xlink:href="prlb-20210630.xsd#statement-note-1-basis-of-presentation" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-1-basis-of-presentation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:label="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-document-and-entity-information" xlink:href="prlb-20210630.xsd#statement-document-and-entity-information" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-document-and-entity-information" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_AmendmentFlag" xlink:label="dei_AmendmentFlag" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_CityAreaCode" xlink:label="dei_CityAreaCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_CurrentFiscalYearEndDate" xlink:label="dei_CurrentFiscalYearEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentFiscalPeriodFocus" xlink:label="dei_DocumentFiscalPeriodFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentFiscalYearFocus" xlink:label="dei_DocumentFiscalYearFocus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentInformationLineItems" xlink:label="dei_DocumentInformationLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentInformationTable" xlink:label="dei_DocumentInformationTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentPeriodEndDate" xlink:label="dei_DocumentPeriodEndDate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentQuarterlyReport" xlink:label="dei_DocumentQuarterlyReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentTransitionReport" xlink:label="dei_DocumentTransitionReport" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_DocumentType" xlink:label="dei_DocumentType" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityAddressAddressLine1" xlink:label="dei_EntityAddressAddressLine1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityAddressCityOrTown" xlink:label="dei_EntityAddressCityOrTown" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityAddressPostalZipCode" xlink:label="dei_EntityAddressPostalZipCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityAddressStateOrProvince" xlink:label="dei_EntityAddressStateOrProvince" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityCentralIndexKey" xlink:label="dei_EntityCentralIndexKey" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityCommonStockSharesOutstanding" xlink:label="dei_EntityCommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityCurrentReportingStatus" xlink:label="dei_EntityCurrentReportingStatus" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityEmergingGrowthCompany" xlink:label="dei_EntityEmergingGrowthCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityFileNumber" xlink:label="dei_EntityFileNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityFilerCategory" xlink:label="dei_EntityFilerCategory" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityIncorporationStateCountryCode" xlink:label="dei_EntityIncorporationStateCountryCode" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityInteractiveDataCurrent" xlink:label="dei_EntityInteractiveDataCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityRegistrantName" xlink:label="dei_EntityRegistrantName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityShellCompany" xlink:label="dei_EntityShellCompany" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntitySmallBusiness" xlink:label="dei_EntitySmallBusiness" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityTaxIdentificationNumber" xlink:label="dei_EntityTaxIdentificationNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LocalPhoneNumber" xlink:label="dei_LocalPhoneNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_Security12bTitle" xlink:label="dei_Security12bTitle" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_SecurityExchangeName" xlink:label="dei_SecurityExchangeName" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_TradingSymbol" xlink:label="dei_TradingSymbol" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationTable" xlink:to="dei_DocumentInformationLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCentralIndexKey" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityRegistrantName" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_AmendmentFlag" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CurrentFiscalYearEndDate" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalPeriodFocus" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentFiscalYearFocus" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentType" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentQuarterlyReport" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentPeriodEndDate" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_DocumentTransitionReport" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFileNumber" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityIncorporationStateCountryCode" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityTaxIdentificationNumber" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressAddressLine1" xlink:type="arc"/>
    <link:presentationArc order="14" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressCityOrTown" xlink:type="arc"/>
    <link:presentationArc order="15" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressStateOrProvince" xlink:type="arc"/>
    <link:presentationArc order="16" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityAddressPostalZipCode" xlink:type="arc"/>
    <link:presentationArc order="17" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_CityAreaCode" xlink:type="arc"/>
    <link:presentationArc order="18" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_LocalPhoneNumber" xlink:type="arc"/>
    <link:presentationArc order="19" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_Security12bTitle" xlink:type="arc"/>
    <link:presentationArc order="20" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_TradingSymbol" xlink:type="arc"/>
    <link:presentationArc order="21" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_SecurityExchangeName" xlink:type="arc"/>
    <link:presentationArc order="22" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCurrentReportingStatus" xlink:type="arc"/>
    <link:presentationArc order="23" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityInteractiveDataCurrent" xlink:type="arc"/>
    <link:presentationArc order="24" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityFilerCategory" xlink:type="arc"/>
    <link:presentationArc order="25" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntitySmallBusiness" xlink:type="arc"/>
    <link:presentationArc order="26" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityEmergingGrowthCompany" xlink:type="arc"/>
    <link:presentationArc order="27" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityShellCompany" xlink:type="arc"/>
    <link:presentationArc order="28" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_DocumentInformationLineItems" xlink:to="dei_EntityCommonStockSharesOutstanding" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations" xlink:href="prlb-20210630.xsd#statement-note-4-business-combinations" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioForecastMember" xlink:label="srt_ScenarioForecastMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationDisclosureTextBlock" xlink:label="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementScenarioAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioForecastMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets" xlink:href="prlb-20210630.xsd#statement-note-5-goodwill-and-other-intangible-assets" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2021/country-2021.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:label="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_EuropeMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="country_US" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements" xlink:href="prlb-20210630.xsd#statement-note-6-fair-value-measurements" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioForecastMember" xlink:label="srt_ScenarioForecastMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueDisclosuresTextBlock" xlink:label="us-gaap_FairValueDisclosuresTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementScenarioAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioForecastMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_FairValueDisclosuresTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_LongtermIncentivePlan2012Member" xlink:label="prlb_LongtermIncentivePlan2012Member" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:label="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameAxis" xlink:label="us-gaap_PlanNameAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PlanNameAxis" xlink:to="us-gaap_PlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PlanNameAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PlanNameAxis" xlink:to="prlb_LongtermIncentivePlan2012Member" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="prlb_ESPPMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-11-income-taxes" xlink:href="prlb-20210630.xsd#statement-note-11-income-taxes" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-11-income-taxes" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NotesToFinancialStatementsAbstract" xlink:label="prlb_NotesToFinancialStatementsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureTextBlockAbstract" xlink:label="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxDisclosureTextBlock" xlink:label="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NotesToFinancialStatementsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_DisclosureTextBlockAbstract-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_DisclosureTextBlockAbstract" xlink:to="us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-tables" xlink:href="prlb-20210630.xsd#statement-note-3-net-income-per-common-share-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-3-net-income-per-common-share-tables" xlink:label="prlb_statement-statement-note-3-net-income-per-common-share-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:label="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-3-net-income-per-common-share-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables" xlink:href="prlb-20210630.xsd#statement-note-4-business-combinations-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-4-business-combinations-tables" xlink:label="prlb_statement-statement-note-4-business-combinations-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:label="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-4-business-combinations-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:href="prlb-20210630.xsd#statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:label="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfGoodwillTextBlock" xlink:label="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:label="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-tables" xlink:href="prlb-20210630.xsd#statement-note-6-fair-value-measurements-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-6-fair-value-measurements-tables" xlink:label="prlb_statement-statement-note-6-fair-value-measurements-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-6-fair-value-measurements-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-tables" xlink:href="prlb-20210630.xsd#statement-note-7-marketable-securities-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-7-marketable-securities-tables" xlink:label="prlb_statement-statement-note-7-marketable-securities-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock" xlink:label="us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:label="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-7-marketable-securities-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-8-inventory-tables" xlink:href="prlb-20210630.xsd#statement-note-8-inventory-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-8-inventory-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-8-inventory-tables" xlink:label="prlb_statement-statement-note-8-inventory-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:label="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-8-inventory-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" xlink:label="prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-9-stockbased-compensation-tables" xlink:label="prlb_statement-statement-note-9-stockbased-compensation-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:label="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:label="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-9-stockbased-compensation-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-tables" xlink:href="prlb-20210630.xsd#statement-note-10-accumulated-other-comprehensive-income-loss-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-tables" xlink:label="prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:label="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables" xlink:href="prlb-20210630.xsd#statement-note-12-segment-reporting-tables" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:label="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-12-segment-reporting-tables" xlink:label="prlb_statement-statement-note-12-segment-reporting-tables" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:label="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:label="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:label="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TableTextBlock" xlink:label="us-gaap_TableTextBlock-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-12-segment-reporting-tables" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_TableTextBlock-2" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="prlb_IncomeFromOperationsByGeographicAreaTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_TableTextBlock" xlink:to="us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual" xlink:href="prlb-20210630.xsd#statement-note-4-business-combinations-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid" xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid-n2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration" xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities" xlink:label="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities-n2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioForecastMember" xlink:label="srt_ScenarioForecastMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" xlink:label="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1-n2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiability-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles" xlink:label="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles-n2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillPurchaseAccountingAdjustments" xlink:label="us-gaap_GoodwillPurchaseAccountingAdjustments-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross" xlink:label="us-gaap_PaymentsToAcquireBusinessesGross-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementScenarioAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioForecastMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquireBusinessesGross-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationContingentConsiderationLiability-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1-n2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles-n2" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GoodwillPurchaseAccountingAdjustments-2" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration-2" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities-n2" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid-n2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual" xlink:href="prlb-20210630.xsd#statement-note-5-goodwill-and-other-intangible-assets-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/country/2021/country-2021.xsd#country_US" xlink:label="country_US" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_EuropeMember" xlink:label="srt_EuropeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_SegmentGeographicalDomain" xlink:label="srt_SegmentGeographicalDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementGeographicalAxis" xlink:label="srt_StatementGeographicalAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AmortizationOfIntangibleAssets" xlink:label="us-gaap_AmortizationOfIntangibleAssets-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss" xlink:label="us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss-n2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinitelivedIntangibleAssetsAcquired1" xlink:label="us-gaap_FinitelivedIntangibleAssetsAcquired1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAcquiredDuringPeriod" xlink:label="us-gaap_GoodwillAcquiredDuringPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_SegmentGeographicalDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementGeographicalAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="srt_EuropeMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementGeographicalAxis" xlink:to="country_US" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GoodwillAcquiredDuringPeriod-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FinitelivedIntangibleAssetsAcquired1-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss-n2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AmortizationOfIntangibleAssets-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual" xlink:href="prlb-20210630.xsd#statement-note-6-fair-value-measurements-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioForecastMember" xlink:label="srt_ScenarioForecastMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioUnspecifiedDomain" xlink:label="srt_ScenarioUnspecifiedDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementScenarioAxis" xlink:label="srt_StatementScenarioAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued" xlink:label="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross" xlink:label="us-gaap_PaymentsToAcquireBusinessesGross-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioUnspecifiedDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_StatementScenarioAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_StatementScenarioAxis" xlink:to="srt_ScenarioForecastMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PaymentsToAcquireBusinessesGross-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_ESPPMember" xlink:label="prlb_ESPPMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EmployeeStockPurchasePlanOfferingPeriod" xlink:label="prlb_EmployeeStockPurchasePlanOfferingPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_LongtermIncentivePlan2012Member" xlink:label="prlb_LongtermIncentivePlan2012Member" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit" xlink:label="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense" xlink:label="us-gaap_AllocatedShareBasedCompensationExpense-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:label="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameAxis" xlink:label="us-gaap_PlanNameAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PlanNameAxis" xlink:to="us-gaap_PlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PlanNameAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PlanNameAxis" xlink:to="prlb_LongtermIncentivePlan2012Member" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="prlb_ESPPMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EmployeeStockPurchasePlanOfferingPeriod-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllocatedShareBasedCompensationExpense-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-2" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1-2" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit-2" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:label="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeStockOptionMember" xlink:label="us-gaap_EmployeeStockOptionMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_EmployeeStockOptionMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EmployeeStockPurchasePlanMember" xlink:label="prlb_EmployeeStockPurchasePlanMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:label="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameAxis" xlink:label="us-gaap_PlanNameAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PlanNameDomain" xlink:label="us-gaap_PlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PlanNameAxis" xlink:to="us-gaap_PlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_PlanNameAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_PlanNameAxis" xlink:to="prlb_EmployeeStockPurchasePlanMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1-1" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual" xlink:href="prlb-20210630.xsd#statement-note-11-income-taxes-details-textual" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod" xlink:label="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_NoteToFinancialStatementDetailsTextual" xlink:label="prlb_NoteToFinancialStatementDetailsTextual" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:label="us-gaap_EffectiveIncomeTaxRateContinuingOperations-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:label="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefits" xlink:label="us-gaap_UnrecognizedTaxBenefits-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_NoteToFinancialStatementDetailsTextual" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncomeTaxExpenseBenefit-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateContinuingOperations-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_UnrecognizedTaxBenefits-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" xlink:href="prlb-20210630.xsd#statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:label="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare" xlink:label="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesAuthorized" xlink:label="us-gaap_CommonStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesIssued" xlink:label="us-gaap_CommonStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockParOrStatedValuePerShare" xlink:label="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockSharesAuthorized" xlink:label="us-gaap_PreferredStockSharesAuthorized" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockSharesIssued" xlink:label="us-gaap_PreferredStockSharesIssued" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfFinancialPositionAbstract" xlink:label="us-gaap_StatementOfFinancialPositionAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfFinancialPositionAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesAuthorized" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PreferredStockSharesIssued" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesAuthorized" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesIssued" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesOutstanding" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:href="prlb-20210630.xsd#statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_Acquired3dHubsMember" xlink:label="prlb_Acquired3dHubsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent" xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent" xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal" xlink:label="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal-3" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:label="prlb_statement-statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain" xlink:label="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis" xlink:label="us-gaap_BusinessAcquisitionAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1" xlink:label="us-gaap_BusinessCombinationConsiderationTransferred1-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable" xlink:label="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:label="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAcquiredFromAcquisition" xlink:label="us-gaap_CashAcquiredFromAcquisition-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross" xlink:label="us-gaap_PaymentsToAcquireBusinessesGross-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_BusinessAcquisitionAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessAcquisitionAxis" xlink:to="prlb_Acquired3dHubsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_Goodwill-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract" xlink:to="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal-3" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities-3" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet-3" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireBusinessesGross-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_CashAcquiredFromAcquisition-n9" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-3" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable-2" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract" xlink:to="us-gaap_BusinessCombinationConsiderationTransferred1-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" xlink:href="prlb-20210630.xsd#statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAcquiredDuringPeriod" xlink:label="us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:label="us-gaap_GoodwillForeignCurrencyTranslationGainLoss-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_GoodwillForeignCurrencyTranslationGainLoss-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_Goodwill-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:href="prlb-20210630.xsd#statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour" xlink:label="prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour-2" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" xlink:href="prlb-20210630.xsd#statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" xlink:label="prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis" xlink:label="us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtSecurities-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BankTimeDepositsMember" xlink:label="us-gaap_BankTimeDepositsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAxis" xlink:label="us-gaap_CashAndCashEquivalentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:label="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CorporateDebtSecuritiesMember" xlink:label="us-gaap_CorporateDebtSecuritiesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinancialInstrumentAxis" xlink:label="us-gaap_FinancialInstrumentAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HeldToMaturitySecurities" xlink:label="us-gaap_HeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss" xlink:label="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HeldToMaturitySecuritiesFairValue" xlink:label="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:label="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:label="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:label="us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:label="us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CashAndCashEquivalentsAxis" xlink:to="us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FinancialInstrumentAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_USStatesAndPoliticalSubdivisionsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_CorporateDebtSecuritiesMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_USGovernmentAgenciesDebtSecuritiesMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_CashAndCashEquivalentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_CashAndCashEquivalentsAxis" xlink:to="us-gaap_BankTimeDepositsMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FinancialInstrumentAxis" xlink:to="us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax-n9" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtSecurities-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecurities" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss-n8" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_HeldToMaturitySecuritiesFairValue" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:href="prlb-20210630.xsd#statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:label="prlb_statement-statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtSecurities-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtSecurities-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details" xlink:href="prlb-20210630.xsd#statement-note-8-inventory-inventory-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-8-inventory-inventory-details" xlink:label="prlb_statement-statement-note-8-inventory-inventory-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryGross" xlink:label="us-gaap_InventoryGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryValuationReserves" xlink:label="us-gaap_InventoryValuationReserves-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-8-inventory-inventory-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryGross" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryValuationReserves-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_InventoryNet-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:label="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:label="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:href="prlb-20210630.xsd#statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_SoftwarePlatformMember" xlink:label="prlb_SoftwarePlatformMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:label="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember" xlink:label="srt_MaximumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember" xlink:label="srt_MinimumMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis" xlink:label="srt_RangeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember" xlink:label="srt_RangeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:label="us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CustomerRelationshipsMember" xlink:label="us-gaap_CustomerRelationshipsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:label="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:label="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:label="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsGross" xlink:label="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:label="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet" xlink:label="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:label="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:label="us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NoncompeteAgreementsMember" xlink:label="us-gaap_NoncompeteAgreementsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TradeNamesMember" xlink:label="us-gaap_TradeNamesMember" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_RangeMember" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_MarketingRelatedIntangibleAssetsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_NoncompeteAgreementsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_RangeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MinimumMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_RangeAxis" xlink:to="srt_MaximumMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_ComputerSoftwareIntangibleAssetMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="prlb_SoftwarePlatformMember" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_TradeNamesMember" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="us-gaap_CustomerRelationshipsMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:href="prlb-20210630.xsd#statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:label="prlb_statement-statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:label="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-2" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareBasic-2" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareDiluted-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:href="prlb-20210630.xsd#statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:label="prlb_statement-statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsFairValueDisclosure" xlink:label="us-gaap_AssetsFairValueDisclosure-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:label="us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsFairValueDisclosure" xlink:label="us-gaap_CashAndCashEquivalentsFairValueDisclosure-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain" xlink:label="us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByAssetClassAxis" xlink:label="us-gaap_FairValueByAssetClassAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:label="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis" xlink:label="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel1Member" xlink:label="us-gaap_FairValueInputsLevel1Member" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel2Member" xlink:label="us-gaap_FairValueInputsLevel2Member" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel3Member" xlink:label="us-gaap_FairValueInputsLevel3Member" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain" xlink:label="us-gaap_FairValueMeasurementFrequencyDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:label="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember" xlink:label="us-gaap_FairValueMeasurementsRecurringMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesFairValueDisclosure" xlink:label="us-gaap_LiabilitiesFairValueDisclosure-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MoneyMarketFundsMember" xlink:label="us-gaap_MoneyMarketFundsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByAssetClassAxis" xlink:to="us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:to="us-gaap_FairValueMeasurementFrequencyDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByMeasurementFrequencyAxis" xlink:to="us-gaap_FairValueMeasurementsRecurringMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueInputsLevel1Member" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueInputsLevel2Member" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="us-gaap_FairValueInputsLevel3Member" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_FairValueByAssetClassAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_FairValueByAssetClassAxis" xlink:to="us-gaap_MoneyMarketFundsMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CashAndCashEquivalentsFairValueDisclosure-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsFairValueDisclosure-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LiabilitiesFairValueDisclosure-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-stock-option-activity-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-9-stockbased-compensation-stock-option-activity-details" xlink:label="prlb_statement-statement-note-9-stockbased-compensation-stock-option-activity-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-n8" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-9-stockbased-compensation-stock-option-activity-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-4" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised-n8" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod-n8" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber-5" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice-5" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:href="prlb-20210630.xsd#statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:label="prlb_statement-statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_UnitedStatesSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_EuropeSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_JapanSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details" xlink:href="prlb-20210630.xsd#statement-note-12-segment-reporting-income-from-operations-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-12-segment-reporting-income-from-operations-details" xlink:label="prlb_statement-statement-note-12-segment-reporting-income-from-operations-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-12-segment-reporting-income-from-operations-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_UnitedStatesSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_EuropeSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_JapanSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingIncomeLoss" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" xlink:href="prlb-20210630.xsd#statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_EuropeSegmentMember" xlink:label="prlb_EuropeSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_JapanSegmentMember" xlink:label="prlb_JapanSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_UnitedStatesSegmentMember" xlink:label="prlb_UnitedStatesSegmentMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" xlink:label="prlb_statement-statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsAxis" xlink:label="srt_ConsolidationItemsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ConsolidationItemsDomain" xlink:label="srt_ConsolidationItemsDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingSegmentsMember" xlink:label="us-gaap_OperatingSegmentsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentDomain" xlink:label="us-gaap_SegmentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementBusinessSegmentsAxis" xlink:label="us-gaap_StatementBusinessSegmentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="srt_ConsolidationItemsDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="us-gaap_SegmentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_ConsolidationItemsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ConsolidationItemsAxis" xlink:to="us-gaap_OperatingSegmentsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementBusinessSegmentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_UnitedStatesSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_EuropeSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementBusinessSegmentsAxis" xlink:to="prlb_JapanSegmentMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_PropertyPlantAndEquipmentNet-2" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details" xlink:href="prlb-20210630.xsd#statement-note-12-segment-reporting-disaggregation-of-revenue-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_CNCMachiningFirstcutMember" xlink:label="prlb_CNCMachiningFirstcutMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_InjectionMoldingProtomoldMember" xlink:label="prlb_InjectionMoldingProtomoldMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_OtherProductsMember" xlink:label="prlb_OtherProductsMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_SheetMetalMember" xlink:label="prlb_SheetMetalMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_ThreeDPrintingFinelineMember" xlink:label="prlb_ThreeDPrintingFinelineMember" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-12-segment-reporting-disaggregation-of-revenue-details" xlink:label="prlb_statement-statement-note-12-segment-reporting-disaggregation-of-revenue-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ProductOrServiceAxis" xlink:label="srt_ProductOrServiceAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ProductsAndServicesDomain" xlink:label="srt_ProductsAndServicesDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-12-segment-reporting-disaggregation-of-revenue-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="srt_ProductsAndServicesDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="srt_ProductOrServiceAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="prlb_InjectionMoldingProtomoldMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="prlb_CNCMachiningFirstcutMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="prlb_ThreeDPrintingFinelineMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="prlb_SheetMetalMember" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="srt_ProductOrServiceAxis" xlink:to="prlb_OtherProductsMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited" xlink:href="prlb-20210630.xsd#statement-consolidated-balance-sheets-current-period-unaudited" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsPayableCurrent" xlink:label="us-gaap_AccountsPayableCurrent-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsReceivableNetCurrent" xlink:label="us-gaap_AccountsReceivableNetCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedIncomeTaxesCurrent" xlink:label="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:label="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdditionalPaidInCapitalCommonStock" xlink:label="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Assets" xlink:label="us-gaap_Assets-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsCurrent" xlink:label="us-gaap_AssetsCurrent-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsCurrentAbstract" xlink:label="us-gaap_AssetsCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent" xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent" xlink:label="us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:label="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockValue" xlink:label="us-gaap_CommonStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:label="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:label="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeaseLiabilityCurrent" xlink:label="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:label="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeaseRightOfUseAsset" xlink:label="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill" xlink:label="us-gaap_Goodwill" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxesReceivable" xlink:label="us-gaap_IncomeTaxesReceivable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryNet" xlink:label="us-gaap_InventoryNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Liabilities" xlink:label="us-gaap_Liabilities-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity" xlink:label="us-gaap_LiabilitiesAndStockholdersEquity-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesCurrent" xlink:label="us-gaap_LiabilitiesCurrent-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesCurrentAbstract" xlink:label="us-gaap_LiabilitiesCurrentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MarketableSecuritiesCurrent" xlink:label="us-gaap_MarketableSecuritiesCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MarketableSecuritiesNoncurrent" xlink:label="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent" xlink:label="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:label="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset" xlink:label="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherAssetsNoncurrent" xlink:label="us-gaap_OtherAssetsNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherIntangibleAssetsNet" xlink:label="us-gaap_OtherIntangibleAssetsNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherLiabilitiesNoncurrent" xlink:label="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockValue" xlink:label="us-gaap_PreferredStockValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:label="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet" xlink:label="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit" xlink:label="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfFinancialPositionAbstract" xlink:label="us-gaap_StatementOfFinancialPositionAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquityAbstract" xlink:label="us-gaap_StockholdersEquityAbstract" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfFinancialPositionAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AssetsCurrentAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_MarketableSecuritiesCurrent" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AccountsReceivableNetCurrent" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_InventoryNet" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_IncomeTaxesReceivable" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_AssetsCurrent-3" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_Goodwill" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OtherIntangibleAssetsNet" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_MarketableSecuritiesNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_FinanceLeaseRightOfUseAsset" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_OtherAssetsNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="14" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AssetsCurrentAbstract" xlink:to="us-gaap_Assets-3" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_LiabilitiesCurrentAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccountsPayableCurrent-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_EmployeeRelatedLiabilitiesCurrent" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedLiabilitiesAndOtherLiabilities" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_FinanceLeaseLiabilityCurrent" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_AccruedIncomeTaxesCurrent" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_LiabilitiesCurrent-3" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_FinanceLeaseLiabilityNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_OtherLiabilitiesNoncurrent" xlink:type="arc"/>
    <link:presentationArc order="13" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_LiabilitiesCurrentAbstract" xlink:to="us-gaap_Liabilities-3" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquityAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_PreferredStockValue" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_CommonStockValue" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_StockholdersEquity-3" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StockholdersEquityAbstract" xlink:to="us-gaap_LiabilitiesAndStockholdersEquity-3" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited" xlink:href="prlb-20210630.xsd#statement-consolidated-statements-of-comprehensive-income-unaudited" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:label="us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold" xlink:label="us-gaap_CostOfGoodsAndServicesSold" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareAbstract" xlink:label="us-gaap_EarningsPerShareAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareBasic" xlink:label="us-gaap_EarningsPerShareBasic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareDiluted" xlink:label="us-gaap_EarningsPerShareDiluted" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GeneralAndAdministrativeExpense" xlink:label="us-gaap_GeneralAndAdministrativeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GrossProfit" xlink:label="us-gaap_GrossProfit-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:label="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementAbstract" xlink:label="us-gaap_IncomeStatementAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit" xlink:label="us-gaap_IncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingExpenses" xlink:label="us-gaap_OperatingExpenses-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingExpensesAbstract" xlink:label="us-gaap_OperatingExpensesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingIncomeLoss" xlink:label="us-gaap_OperatingIncomeLoss-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherNonoperatingIncomeExpense" xlink:label="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense" xlink:label="us-gaap_ResearchAndDevelopmentExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:label="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenuesAbstract" xlink:label="us-gaap_RevenuesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SellingAndMarketingExpense" xlink:label="us-gaap_SellingAndMarketingExpense" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:label="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:label="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncomeStatementAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_RevenuesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RevenuesAbstract" xlink:to="us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RevenuesAbstract" xlink:to="us-gaap_CostOfGoodsAndServicesSold" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_RevenuesAbstract" xlink:to="us-gaap_GrossProfit-3" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OperatingExpensesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_SellingAndMarketingExpense" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_ResearchAndDevelopmentExpense" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_GeneralAndAdministrativeExpense" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingExpenses-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OperatingIncomeLoss-3" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest-3" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OperatingExpensesAbstract" xlink:to="us-gaap_NetIncomeLoss-3" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_EarningsPerShareAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareBasic" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_EarningsPerShareAbstract" xlink:to="us-gaap_EarningsPerShareDiluted" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract" xlink:to="us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_ComprehensiveIncomeNetOfTaxAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited" xlink:href="prlb-20210630.xsd#statement-consolidated-statements-of-cash-flows-unaudited" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:label="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:label="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:label="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss" xlink:label="us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:label="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DepreciationDepletionAndAmortization" xlink:label="us-gaap_DepreciationDepletionAndAmortization" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:label="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinanceLeasePrincipalPayments" xlink:label="us-gaap_FinanceLeasePrincipalPayments-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsPayable" xlink:label="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:label="us-gaap_IncreaseDecreaseInAccountsReceivable-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:label="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInInventories" xlink:label="us-gaap_IncreaseDecreaseInInventories-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:label="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInOtherOperatingLiabilities" xlink:label="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:label="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivities-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:label="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherNoncashIncomeExpense" xlink:label="us-gaap_OtherNoncashIncomeExpense-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:label="us-gaap_PaymentsForRepurchaseOfCommonStock-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation" xlink:label="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt" xlink:label="us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:label="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireOtherInvestments" xlink:label="us-gaap_PaymentsToAcquireOtherInvestments-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:label="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:label="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:label="us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities" xlink:label="us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensation" xlink:label="us-gaap_ShareBasedCompensation-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfCashFlowsAbstract" xlink:label="us-gaap_StatementOfCashFlowsAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfCashFlowsAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DepreciationDepletionAndAmortization" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_ShareBasedCompensation-2" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments-n8" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss-n8" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="us-gaap_OtherNoncashIncomeExpense-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsReceivable-n8" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInInventories-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets-n8" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_IncreaseDecreaseInOtherOperatingLiabilities-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_IncreaseDecreaseInOperatingCapitalAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInOperatingActivities-3" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquirePropertyPlantAndEquipment-n8" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireOtherInvestments-n8" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt-n8" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInInvestingActivities-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation-n8" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_PaymentsForRepurchaseOfCommonStock-n8" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_FinanceLeasePrincipalPayments-n8" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_NetCashProvidedByUsedInFinancingActivities-3" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect-3" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-4" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited" xlink:href="prlb-20210630.xsd#statement-consolidated-statements-of-shareholders-equity-unaudited" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdditionalPaidInCapitalMember" xlink:label="us-gaap_AdditionalPaidInCapitalMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:label="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockMember" xlink:label="us-gaap_CommonStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesOutstanding" xlink:label="us-gaap_CommonStockSharesOutstanding-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax" xlink:label="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss" xlink:label="us-gaap_NetIncomeLoss" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:label="us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsMember" xlink:label="us-gaap_RetainedEarningsMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfStockholdersEquityAbstract" xlink:label="us-gaap_StatementOfStockholdersEquityAbstract" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:label="us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:label="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:label="us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:label="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodShares" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedAndRetiredDuringPeriodValue" xlink:label="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-5" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementOfStockholdersEquityAbstract" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_CommonStockMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AdditionalPaidInCapitalMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_RetainedEarningsMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_CommonStockSharesOutstanding-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity-4" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodSharesAcquisitions" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockIssuedDuringPeriodValueAcquisitions" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-n8" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-n8" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax-2" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodShares-n8" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_StockRepurchasedAndRetiredDuringPeriodValue-n8" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_NetIncomeLoss" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_CommonStockSharesOutstanding-4" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_StockholdersEquity-4" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_CommonStockSharesOutstanding-5" xlink:type="arc"/>
    <link:presentationArc order="12" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract" xlink:to="us-gaap_StockholdersEquity-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:href="prlb-20210630.xsd#statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:label="prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember" xlink:label="us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:label="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedTranslationAdjustmentMember" xlink:label="us-gaap_AccumulatedTranslationAdjustmentMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityComponentDomain" xlink:label="us-gaap_EquityComponentDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:label="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:label="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent-3" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent" xlink:label="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent-n8" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementEquityComponentsAxis" xlink:label="us-gaap_StatementEquityComponentsAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity" xlink:label="us-gaap_StockholdersEquity-5" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_EquityComponentDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementEquityComponentsAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AccumulatedTranslationAdjustmentMember" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementEquityComponentsAxis" xlink:to="us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent-n8" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/totalLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent-3" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_StockholdersEquity-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-restricted-stock-options-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-9-stockbased-compensation-restricted-stock-options-details" xlink:label="prlb_statement-statement-note-9-stockbased-compensation-restricted-stock-options-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockMember" xlink:label="us-gaap_RestrictedStockMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-9-stockbased-compensation-restricted-stock-options-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_RestrictedStockMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-4" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-2" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-n9" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-2" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-n9" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-2" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber-5" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-5" xlink:type="arc"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details" xlink:href="prlb-20210630.xsd#statement-note-9-stockbased-compensation-performance-stock-details" xlink:type="simple"/>
  <link:presentationLink xlink:role="http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details" xlink:type="extended">
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_EntityDomain" xlink:label="dei_EntityDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.sec.gov/dei/2021/dei-2021.xsd#dei_LegalEntityAxis" xlink:label="dei_LegalEntityAxis" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:label="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:type="locator"/>
    <link:loc xlink:href="prlb-20210630.xsd#prlb_statement-statement-note-9-stockbased-compensation-performance-stock-details" xlink:label="prlb_statement-statement-note-9-stockbased-compensation-performance-stock-details" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis" xlink:label="us-gaap_AwardTypeAxis" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PerformanceSharesMember" xlink:label="us-gaap_PerformanceSharesMember" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-2" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-n9" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:label="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-1" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:label="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-4" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions" xlink:label="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-5" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems" xlink:label="us-gaap_StatementLineItems" xlink:type="locator"/>
    <link:loc xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable" xlink:label="us-gaap_StatementTable" xlink:type="locator"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="prlb_statement-statement-note-9-stockbased-compensation-performance-stock-details" xlink:to="us-gaap_StatementTable" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="dei_LegalEntityAxis" xlink:to="dei_EntityDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_AwardTypeAxis" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_AwardTypeAxis" xlink:to="us-gaap_PerformanceSharesMember" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="dei_LegalEntityAxis" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementTable" xlink:to="us-gaap_StatementLineItems" xlink:type="arc"/>
    <link:presentationArc order="0" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-4" xlink:type="arc"/>
    <link:presentationArc order="1" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-4" xlink:type="arc"/>
    <link:presentationArc order="2" preferredLabel="http://www.xbrl.org/2003/role/terseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod-2" xlink:type="arc"/>
    <link:presentationArc order="3" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue-1" xlink:type="arc"/>
    <link:presentationArc order="4" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod-n9" xlink:type="arc"/>
    <link:presentationArc order="5" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue-1" xlink:type="arc"/>
    <link:presentationArc order="6" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange" xlink:type="arc"/>
    <link:presentationArc order="7" preferredLabel="http://www.xbrl.org/2003/role/label" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue" xlink:type="arc"/>
    <link:presentationArc order="8" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod-n9" xlink:type="arc"/>
    <link:presentationArc order="9" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue-1" xlink:type="arc"/>
    <link:presentationArc order="10" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions-5" xlink:type="arc"/>
    <link:presentationArc order="11" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel" xbrldt:closed="true" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="us-gaap_StatementLineItems" xlink:to="us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue-5" xlink:type="arc"/>
  </link:presentationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>10
<FILENAME>prlb20210630_10q_htm.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:country="http://xbrl.sec.gov/country/2021"
  xmlns:dei="http://xbrl.sec.gov/dei/2021"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:prlb="http://www.protolabs.com/20210630"
  xmlns:srt="http://fasb.org/srt/2021-01-31"
  xmlns:us-gaap="http://fasb.org/us-gaap/2021-01-31"
  xmlns:utr="http://www.xbrl.org/2009/utr"
  xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <link:schemaRef xlink:href="prlb-20210630.xsd" xlink:type="simple"/>
    <context id="d_2021-01-01_2021-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="i_2021-07-29">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2021-07-29</instant>
        </period>
    </context>
    <context id="i_2021-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2020-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-03-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-03-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-03-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-03-31</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-03-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-03-31</endDate>
        </period>
    </context>
    <context id="i_2021-03-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-03-31</instant>
        </period>
    </context>
    <context id="i_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-03-31</instant>
        </period>
    </context>
    <context id="i_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-03-31</instant>
        </period>
    </context>
    <context id="i_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-03-31</instant>
        </period>
    </context>
    <context id="i_2021-03-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2021-03-31</instant>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="i_2021-06-30_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i_2019-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-03-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-03-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-03-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-03-31</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-03-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-03-31</endDate>
        </period>
    </context>
    <context id="i_2020-03-31_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-03-31</instant>
        </period>
    </context>
    <context id="i_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-03-31</instant>
        </period>
    </context>
    <context id="i_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-03-31</instant>
        </period>
    </context>
    <context id="i_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-03-31</instant>
        </period>
    </context>
    <context id="i_2020-03-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2020-03-31</instant>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="i_2020-06-30_StatementEquityComponentsAxis-CommonStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-06-30</instant>
        </period>
    </context>
    <context id="i_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-06-30</instant>
        </period>
    </context>
    <context id="i_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-06-30</instant>
        </period>
    </context>
    <context id="i_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-06-30</instant>
        </period>
    </context>
    <context id="i_2020-06-30">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <instant>2020-06-30</instant>
        </period>
    </context>
    <context id="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-22</startDate>
            <endDate>2021-01-22</endDate>
        </period>
    </context>
    <context id="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-01-22</instant>
        </period>
    </context>
    <context id="d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="srt:StatementScenarioAxis">srt:ScenarioForecastMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-22</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_StatementGeographicalAxis-EuropeMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-22</startDate>
            <endDate>2021-01-22</endDate>
        </period>
    </context>
    <context id="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_StatementGeographicalAxis-US">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">prlb:Acquired3dHubsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-22</startDate>
            <endDate>2021-01-22</endDate>
        </period>
    </context>
    <context id="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:MarketingRelatedIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:MarketingRelatedIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:MarketingRelatedIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">prlb:SoftwarePlatformMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">prlb:SoftwarePlatformMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">prlb:SoftwarePlatformMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TradeNamesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-12-31">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2021-06-30_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByAssetClassAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2021-06-30_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByAssetClassAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2021-06-30_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByAssetClassAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByAssetClassAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByAssetClassAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByAssetClassAxis">us-gaap:MoneyMarketFundsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2021-06-30_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USStatesAndPoliticalSubdivisionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2021-06-30_FinancialInstrumentAxis-CorporateDebtSecuritiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2021-06-30_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2021-06-30_CashAndCashEquivalentsAxis-BankTimeDepositsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:BankTimeDepositsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USStatesAndPoliticalSubdivisionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USGovernmentAgenciesDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:CashAndCashEquivalentsAxis">us-gaap:BankTimeDepositsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2020-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CommercialPaperNotIncludedWithCashAndCashEquivalentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_PlanNameAxis-LongtermIncentivePlan2012Member">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">prlb:LongtermIncentivePlan2012Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_AwardTypeAxis-ESPPMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">prlb:ESPPMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="i_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="i_2020-12-31_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="i_2021-06-30_AwardTypeAxis-RestrictedStockMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2021-06-30_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="i_2020-12-31_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_AwardTypeAxis-PerformanceSharesMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">prlb:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">prlb:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MinimumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">prlb:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MaximumMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">prlb:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">prlb:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">prlb:EmployeeStockPurchasePlanMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedTranslationAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedNetUnrealizedInvestmentGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:UnitedStatesSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:EuropeSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementBusinessSegmentsAxis">prlb:JapanSegmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-06-30</instant>
        </period>
    </context>
    <context id="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ConsolidationItemsAxis">us-gaap:OperatingSegmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:InjectionMoldingProtomoldMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:InjectionMoldingProtomoldMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:InjectionMoldingProtomoldMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:InjectionMoldingProtomoldMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:CNCMachiningFirstcutMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:CNCMachiningFirstcutMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:CNCMachiningFirstcutMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:CNCMachiningFirstcutMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:ThreeDPrintingFinelineMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:ThreeDPrintingFinelineMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:ThreeDPrintingFinelineMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:ThreeDPrintingFinelineMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_ProductOrServiceAxis-SheetMetalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:SheetMetalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_ProductOrServiceAxis-SheetMetalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:SheetMetalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_ProductOrServiceAxis-SheetMetalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:SheetMetalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_ProductOrServiceAxis-SheetMetalMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:SheetMetalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-04-01_2021-06-30_ProductOrServiceAxis-OtherProductsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:OtherProductsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-04-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-04-01_2020-06-30_ProductOrServiceAxis-OtherProductsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:OtherProductsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-04-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <context id="d_2021-01-01_2021-06-30_ProductOrServiceAxis-OtherProductsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:OtherProductsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-06-30</endDate>
        </period>
    </context>
    <context id="d_2020-01-01_2020-06-30_ProductOrServiceAxis-OtherProductsMember">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001443669</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">prlb:OtherProductsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-06-30</endDate>
        </period>
    </context>
    <unit id="Share">
        <measure>shares</measure>
    </unit>
    <unit id="USD">
        <measure>iso4217:USD</measure>
    </unit>
    <unit id="USDPerShare">
        <divide>
            <unitNumerator>
                <measure>iso4217:USD</measure>
            </unitNumerator>
            <unitDenominator>
                <measure>shares</measure>
            </unitDenominator>
        </divide>
    </unit>
    <unit id="EUR">
        <measure>iso4217:EUR</measure>
    </unit>
    <unit id="Year">
        <measure>utr:Y</measure>
    </unit>
    <unit id="Pure">
        <measure>pure</measure>
    </unit>
    <unit id="Month">
        <measure>utr:M</measure>
    </unit>
    <dei:EntityCentralIndexKey
      contextRef="d_2021-01-01_2021-06-30"
      id="thunderdome-EntityCentralIndexKey">0001443669</dei:EntityCentralIndexKey>
    <dei:EntityRegistrantName
      contextRef="d_2021-01-01_2021-06-30"
      id="thunderdome-EntityRegistrantName">Proto Labs Inc</dei:EntityRegistrantName>
    <dei:AmendmentFlag contextRef="d_2021-01-01_2021-06-30">false</dei:AmendmentFlag>
    <dei:CurrentFiscalYearEndDate contextRef="d_2021-01-01_2021-06-30">--12-31</dei:CurrentFiscalYearEndDate>
    <dei:DocumentFiscalPeriodFocus contextRef="d_2021-01-01_2021-06-30">Q2</dei:DocumentFiscalPeriodFocus>
    <dei:DocumentFiscalYearFocus contextRef="d_2021-01-01_2021-06-30">2021</dei:DocumentFiscalYearFocus>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i_2021-06-30"
      decimals="INF"
      id="c75343084"
      unitRef="USD">1997</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c75343085"
      unitRef="USD">1781</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i_2021-06-30"
      decimals="INF"
      id="c75343144"
      unitRef="USDPerShare">0.001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c75343145"
      unitRef="USDPerShare">0.001</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i_2021-06-30"
      decimals="INF"
      id="c75343146"
      unitRef="Share">10000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c75343147"
      unitRef="Share">10000000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343148"
      unitRef="Share">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343149"
      unitRef="Share">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343150"
      unitRef="Share">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343151"
      unitRef="Share">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i_2021-06-30"
      decimals="INF"
      id="c75343154"
      unitRef="USDPerShare">0.001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c75343155"
      unitRef="USDPerShare">0.001</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i_2021-06-30"
      decimals="INF"
      id="c75343156"
      unitRef="Share">150000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c75343157"
      unitRef="Share">150000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="i_2021-06-30"
      decimals="INF"
      id="c75343158"
      unitRef="Share">27761063</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2021-06-30"
      decimals="INF"
      id="c75343160"
      unitRef="Share">27761063</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesIssued
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c75343159"
      unitRef="Share">26776796</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c75343161"
      unitRef="Share">26776796</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_StatementGeographicalAxis-EuropeMember"
      decimals="-5"
      id="c75343673"
      unitRef="EUR">106500000</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:FinitelivedIntangibleAssetsAcquired1
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_StatementGeographicalAxis-EuropeMember"
      decimals="-5"
      id="c75343677"
      unitRef="EUR">11600000</us-gaap:FinitelivedIntangibleAssetsAcquired1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod
      contextRef="d_2021-01-01_2021-06-30_PlanNameAxis-LongtermIncentivePlan2012Member"
      id="c75343967">P10Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod>
    <prlb:EmployeeStockPurchasePlanOfferingPeriod
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-ESPPMember"
      id="c75343972">P6M</prlb:EmployeeStockPurchasePlanOfferingPeriod>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember"
      id="c75343986">P10Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      id="c75343987">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      id="c75343988">P5Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember_RangeAxis-MinimumMember"
      id="c75343998">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember_RangeAxis-MaximumMember"
      id="c75343999">P5Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit
      contextRef="i_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="-3"
      id="c75344006"
      unitRef="Pure">0</prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      id="c75344008">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <dei:DocumentType contextRef="d_2021-01-01_2021-06-30">10-Q</dei:DocumentType>
    <dei:DocumentQuarterlyReport contextRef="d_2021-01-01_2021-06-30">true</dei:DocumentQuarterlyReport>
    <dei:DocumentPeriodEndDate contextRef="d_2021-01-01_2021-06-30">2021-06-30</dei:DocumentPeriodEndDate>
    <dei:DocumentTransitionReport contextRef="d_2021-01-01_2021-06-30">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber contextRef="d_2021-01-01_2021-06-30">001-35435</dei:EntityFileNumber>
    <dei:EntityIncorporationStateCountryCode contextRef="d_2021-01-01_2021-06-30">MN</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber contextRef="d_2021-01-01_2021-06-30">41-1939628</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1 contextRef="d_2021-01-01_2021-06-30">5540 Pioneer Creek Drive</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown contextRef="d_2021-01-01_2021-06-30">Maple Plain</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince contextRef="d_2021-01-01_2021-06-30">MN</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode contextRef="d_2021-01-01_2021-06-30">55359</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode contextRef="d_2021-01-01_2021-06-30">763</dei:CityAreaCode>
    <dei:LocalPhoneNumber contextRef="d_2021-01-01_2021-06-30">479-3680</dei:LocalPhoneNumber>
    <dei:Security12bTitle contextRef="d_2021-01-01_2021-06-30">Common Stock, Par Value $0.001 Per Share</dei:Security12bTitle>
    <dei:TradingSymbol contextRef="d_2021-01-01_2021-06-30">PRLB</dei:TradingSymbol>
    <dei:SecurityExchangeName contextRef="d_2021-01-01_2021-06-30">NYSE</dei:SecurityExchangeName>
    <dei:EntityCurrentReportingStatus contextRef="d_2021-01-01_2021-06-30">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent contextRef="d_2021-01-01_2021-06-30">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory contextRef="d_2021-01-01_2021-06-30">Large Accelerated Filer</dei:EntityFilerCategory>
    <dei:EntitySmallBusiness contextRef="d_2021-01-01_2021-06-30">false</dei:EntitySmallBusiness>
    <dei:EntityEmergingGrowthCompany contextRef="d_2021-01-01_2021-06-30">false</dei:EntityEmergingGrowthCompany>
    <dei:EntityShellCompany contextRef="d_2021-01-01_2021-06-30">false</dei:EntityShellCompany>
    <dei:EntityCommonStockSharesOutstanding contextRef="i_2021-07-29" decimals="INF" unitRef="Share">27761063</dei:EntityCommonStockSharesOutstanding>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343077"
      unitRef="USD">41909000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343078"
      unitRef="USD">127603000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:MarketableSecuritiesCurrent
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343079"
      unitRef="USD">18341000</us-gaap:MarketableSecuritiesCurrent>
    <us-gaap:MarketableSecuritiesCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343080"
      unitRef="USD">34088000</us-gaap:MarketableSecuritiesCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i_2021-06-30"
      decimals="-4"
      id="c75343081"
      unitRef="USD">83470000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343082"
      unitRef="USD">57877000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:InventoryNet
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343086"
      unitRef="USD">9111000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343088"
      unitRef="USD">10862000</us-gaap:InventoryNet>
    <us-gaap:IncomeTaxesReceivable
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343089"
      unitRef="USD">4575000</us-gaap:IncomeTaxesReceivable>
    <us-gaap:IncomeTaxesReceivable
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c75343090"
      unitRef="USD">540000</us-gaap:IncomeTaxesReceivable>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343091"
      unitRef="USD">10107000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343092"
      unitRef="USD">11032000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343093"
      unitRef="USD">167513000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343094"
      unitRef="USD">242002000</us-gaap:AssetsCurrent>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343095"
      unitRef="USD">288495000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343096"
      unitRef="USD">282666000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:Goodwill
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343097"
      unitRef="USD">407191000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343098"
      unitRef="USD">128752000</us-gaap:Goodwill>
    <us-gaap:OtherIntangibleAssetsNet
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343099"
      unitRef="USD">41674000</us-gaap:OtherIntangibleAssetsNet>
    <us-gaap:OtherIntangibleAssetsNet
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c75343100"
      unitRef="USD">14350000</us-gaap:OtherIntangibleAssetsNet>
    <us-gaap:MarketableSecuritiesNoncurrent
      contextRef="i_2021-06-30"
      decimals="-5"
      id="c75343101"
      unitRef="USD">28700000</us-gaap:MarketableSecuritiesNoncurrent>
    <us-gaap:MarketableSecuritiesNoncurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343102"
      unitRef="USD">59357000</us-gaap:MarketableSecuritiesNoncurrent>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343103"
      unitRef="USD">8801000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343104"
      unitRef="USD">9855000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:FinanceLeaseRightOfUseAsset
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343105"
      unitRef="USD">2147000</us-gaap:FinanceLeaseRightOfUseAsset>
    <us-gaap:FinanceLeaseRightOfUseAsset
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343106"
      unitRef="USD">2396000</us-gaap:FinanceLeaseRightOfUseAsset>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343107"
      unitRef="USD">4769000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343108"
      unitRef="USD">4826000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:Assets
      contextRef="i_2021-06-30"
      decimals="-4"
      id="c75343109"
      unitRef="USD">949290000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343110"
      unitRef="USD">744204000</us-gaap:Assets>
    <us-gaap:AccountsPayableCurrent
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343113"
      unitRef="USD">26038000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343114"
      unitRef="USD">18248000</us-gaap:AccountsPayableCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i_2021-06-30"
      decimals="-4"
      id="c75343115"
      unitRef="USD">14930000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:EmployeeRelatedLiabilitiesCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343116"
      unitRef="USD">11989000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesAndOtherLiabilities
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343117"
      unitRef="USD">15072000</us-gaap:AccruedLiabilitiesAndOtherLiabilities>
    <us-gaap:AccruedLiabilitiesAndOtherLiabilities
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343118"
      unitRef="USD">16193000</us-gaap:AccruedLiabilitiesAndOtherLiabilities>
    <us-gaap:BusinessCombinationContingentConsiderationLiabilityCurrent
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343119"
      unitRef="USD">2936000</us-gaap:BusinessCombinationContingentConsiderationLiabilityCurrent>
    <us-gaap:BusinessCombinationContingentConsiderationLiabilityCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343120"
      unitRef="USD">0</us-gaap:BusinessCombinationContingentConsiderationLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343121"
      unitRef="USD">2847000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343122"
      unitRef="USD">3272000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:FinanceLeaseLiabilityCurrent
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343123"
      unitRef="USD">554000</us-gaap:FinanceLeaseLiabilityCurrent>
    <us-gaap:FinanceLeaseLiabilityCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343124"
      unitRef="USD">552000</us-gaap:FinanceLeaseLiabilityCurrent>
    <us-gaap:AccruedIncomeTaxesCurrent
      contextRef="i_2021-06-30"
      decimals="-4"
      id="c75343125"
      unitRef="USD">40000</us-gaap:AccruedIncomeTaxesCurrent>
    <us-gaap:AccruedIncomeTaxesCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343126"
      unitRef="USD">0</us-gaap:AccruedIncomeTaxesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343127"
      unitRef="USD">62417000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343128"
      unitRef="USD">50254000</us-gaap:LiabilitiesCurrent>
    <us-gaap:BusinessCombinationContingentConsiderationLiabilityNoncurrent
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343129"
      unitRef="USD">2693000</us-gaap:BusinessCombinationContingentConsiderationLiabilityNoncurrent>
    <us-gaap:BusinessCombinationContingentConsiderationLiabilityNoncurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343130"
      unitRef="USD">0</us-gaap:BusinessCombinationContingentConsiderationLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343131"
      unitRef="USD">7097000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343132"
      unitRef="USD">7586000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:FinanceLeaseLiabilityNoncurrent
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343133"
      unitRef="USD">1639000</us-gaap:FinanceLeaseLiabilityNoncurrent>
    <us-gaap:FinanceLeaseLiabilityNoncurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343134"
      unitRef="USD">1919000</us-gaap:FinanceLeaseLiabilityNoncurrent>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343135"
      unitRef="USD">36898000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343136"
      unitRef="USD">33854000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343137"
      unitRef="USD">6569000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343138"
      unitRef="USD">6235000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:Liabilities
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343139"
      unitRef="USD">117313000</us-gaap:Liabilities>
    <us-gaap:Liabilities
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343140"
      unitRef="USD">99848000</us-gaap:Liabilities>
    <us-gaap:PreferredStockValue
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343142"
      unitRef="USD">0</us-gaap:PreferredStockValue>
    <us-gaap:PreferredStockValue
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343143"
      unitRef="USD">0</us-gaap:PreferredStockValue>
    <us-gaap:CommonStockValue
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343152"
      unitRef="USD">28000</us-gaap:CommonStockValue>
    <us-gaap:CommonStockValue
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343153"
      unitRef="USD">27000</us-gaap:CommonStockValue>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343162"
      unitRef="USD">461597000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343163"
      unitRef="USD">284848000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343164"
      unitRef="USD">378467000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343165"
      unitRef="USD">362901000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343166"
      unitRef="USD">-8115000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c75343167"
      unitRef="USD">-3420000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343168"
      unitRef="USD">831977000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343169"
      unitRef="USD">644356000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i_2021-06-30"
      decimals="-4"
      id="c75343170"
      unitRef="USD">949290000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343171"
      unitRef="USD">744204000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343185"
      unitRef="USD">123048000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343186"
      unitRef="USD">106575000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343187"
      unitRef="USD">239174000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343188"
      unitRef="USD">221683000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343189"
      unitRef="USD">66423000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343190"
      unitRef="USD">54119000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343191"
      unitRef="USD">127219000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343192"
      unitRef="USD">111127000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:GrossProfit
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343193"
      unitRef="USD">56625000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343194"
      unitRef="USD">52456000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343195"
      unitRef="USD">111955000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343196"
      unitRef="USD">110556000</us-gaap:GrossProfit>
    <us-gaap:SellingAndMarketingExpense
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343198"
      unitRef="USD">21044000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343199"
      unitRef="USD">16936000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343200"
      unitRef="USD">40524000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:SellingAndMarketingExpense
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343201"
      unitRef="USD">35116000</us-gaap:SellingAndMarketingExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-4"
      id="c75343202"
      unitRef="USD">11060000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343203"
      unitRef="USD">8648000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343204"
      unitRef="USD">23241000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343205"
      unitRef="USD">17635000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343206"
      unitRef="USD">8417000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343207"
      unitRef="USD">12521000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343208"
      unitRef="USD">27825000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:GeneralAndAdministrativeExpense
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343209"
      unitRef="USD">26629000</us-gaap:GeneralAndAdministrativeExpense>
    <us-gaap:OperatingExpenses
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343210"
      unitRef="USD">40521000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343211"
      unitRef="USD">38105000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-4"
      id="c75343212"
      unitRef="USD">91590000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingExpenses
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-4"
      id="c75343213"
      unitRef="USD">79380000</us-gaap:OperatingExpenses>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343214"
      unitRef="USD">16104000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343215"
      unitRef="USD">14351000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343216"
      unitRef="USD">20365000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343217"
      unitRef="USD">31176000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343218"
      unitRef="USD">137000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343219"
      unitRef="USD">767000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343220"
      unitRef="USD">-176000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343221"
      unitRef="USD">1821000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343222"
      unitRef="USD">16241000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343223"
      unitRef="USD">15118000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343224"
      unitRef="USD">20189000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343225"
      unitRef="USD">32997000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343226"
      unitRef="USD">3326000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343227"
      unitRef="USD">2511000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343228"
      unitRef="USD">3562000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343229"
      unitRef="USD">6406000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343230"
      unitRef="USD">12915000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343231"
      unitRef="USD">12607000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343232"
      unitRef="USD">16627000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343233"
      unitRef="USD">26591000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2021-04-01_2021-06-30"
      decimals="INF"
      id="c75343235"
      unitRef="USDPerShare">0.47</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2020-04-01_2020-06-30"
      decimals="INF"
      id="c75343236"
      unitRef="USDPerShare">0.47</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75343237"
      unitRef="USDPerShare">0.60</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2020-01-01_2020-06-30"
      decimals="INF"
      id="c75343238"
      unitRef="USDPerShare">1.00</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2021-04-01_2021-06-30"
      decimals="INF"
      id="c75343239"
      unitRef="USDPerShare">0.47</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2020-04-01_2020-06-30"
      decimals="INF"
      id="c75343240"
      unitRef="USDPerShare">0.47</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75343241"
      unitRef="USDPerShare">0.60</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2020-01-01_2020-06-30"
      decimals="INF"
      id="c75343242"
      unitRef="USDPerShare">0.99</us-gaap:EarningsPerShareDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2021-04-01_2021-06-30"
      decimals="INF"
      id="c75343244"
      unitRef="Share">27735732</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2020-04-01_2020-06-30"
      decimals="INF"
      id="c75343245"
      unitRef="Share">26660498</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75343246"
      unitRef="Share">27600684</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2020-01-01_2020-06-30"
      decimals="INF"
      id="c75343247"
      unitRef="Share">26718652</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2021-04-01_2021-06-30"
      decimals="INF"
      id="c75343248"
      unitRef="Share">27744870</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2020-04-01_2020-06-30"
      decimals="INF"
      id="c75343249"
      unitRef="Share">26760866</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75343250"
      unitRef="Share">27741464</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2020-01-01_2020-06-30"
      decimals="INF"
      id="c75343251"
      unitRef="Share">26837938</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343253"
      unitRef="USD">14896000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343254"
      unitRef="USD">12971000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343255"
      unitRef="USD">11932000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343256"
      unitRef="USD">23975000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343275"
      unitRef="Share">26776796</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343276"
      unitRef="USD">27000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343277"
      unitRef="USD">284848000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343278"
      unitRef="USD">362901000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-4"
      id="c75343279"
      unitRef="USD">-3420000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343280"
      unitRef="USD">644356000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343281"
      unitRef="Share">48955</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343282"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-4"
      id="c75343283"
      unitRef="USD">-290000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343284"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343285"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2021-01-01_2021-03-31"
      decimals="-4"
      id="c75343286"
      unitRef="USD">-290000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodSharesAcquisitions
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343287"
      unitRef="Share">863995</us-gaap:StockIssuedDuringPeriodSharesAcquisitions>
    <us-gaap:StockIssuedDuringPeriodValueAcquisitions
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343288"
      unitRef="USD">1000</us-gaap:StockIssuedDuringPeriodValueAcquisitions>
    <us-gaap:StockIssuedDuringPeriodValueAcquisitions
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343289"
      unitRef="USD">166708000</us-gaap:StockIssuedDuringPeriodValueAcquisitions>
    <us-gaap:StockIssuedDuringPeriodValueAcquisitions
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343290"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueAcquisitions>
    <us-gaap:StockIssuedDuringPeriodValueAcquisitions
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343291"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueAcquisitions>
    <us-gaap:StockIssuedDuringPeriodValueAcquisitions
      contextRef="d_2021-01-01_2021-03-31"
      decimals="-3"
      id="c75343292"
      unitRef="USD">166709000</us-gaap:StockIssuedDuringPeriodValueAcquisitions>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343294"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-4"
      id="c75343295"
      unitRef="USD">5620000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343296"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343297"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-01-01_2021-03-31"
      decimals="-4"
      id="c75343298"
      unitRef="USD">5620000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodShares
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343299"
      unitRef="Share">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodShares>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343300"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343301"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343302"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343303"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2021-01-01_2021-03-31"
      decimals="-3"
      id="c75343304"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343306"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343307"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343308"
      unitRef="USD">3712000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343309"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-03-31"
      decimals="-3"
      id="c75343310"
      unitRef="USD">3712000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343313"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343314"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343315"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343316"
      unitRef="USD">-6842000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2021-01-01_2021-03-31"
      decimals="-3"
      id="c75343317"
      unitRef="USD">-6842000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343319"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343320"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343321"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="d_2021-01-01_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343322"
      unitRef="USD">166000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="d_2021-01-01_2021-03-31"
      decimals="-3"
      id="c75343323"
      unitRef="USD">166000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2021-01-01_2021-03-31"
      decimals="-3"
      id="c75343329"
      unitRef="USD">-2964000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2021-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343330"
      unitRef="Share">27689746</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343331"
      unitRef="USD">28000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343332"
      unitRef="USD">456886000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343333"
      unitRef="USD">366613000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343334"
      unitRef="USD">-10096000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-03-31"
      decimals="-3"
      id="c75343335"
      unitRef="USD">813431000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343336"
      unitRef="Share">85317</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343337"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343338"
      unitRef="USD">-81000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343339"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343340"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343341"
      unitRef="USD">-81000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343343"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343344"
      unitRef="USD">4941000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343345"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343346"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343347"
      unitRef="USD">4941000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodShares
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343348"
      unitRef="Share">14000</us-gaap:StockRepurchasedAndRetiredDuringPeriodShares>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343349"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343350"
      unitRef="USD">149000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343351"
      unitRef="USD">1061000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343352"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-4"
      id="c75343353"
      unitRef="USD">1210000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343355"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343356"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343357"
      unitRef="USD">12915000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343358"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343359"
      unitRef="USD">12915000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343362"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343363"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343364"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-4"
      id="c75343365"
      unitRef="USD">2030000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-4"
      id="c75343366"
      unitRef="USD">2030000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343368"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343369"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343370"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343371"
      unitRef="USD">-49000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343372"
      unitRef="USD">-49000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343378"
      unitRef="USD">14896000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2021-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343379"
      unitRef="Share">27761063</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343380"
      unitRef="USD">28000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343381"
      unitRef="USD">461597000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343382"
      unitRef="USD">378467000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343383"
      unitRef="USD">-8115000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343384"
      unitRef="USD">831977000</us-gaap:StockholdersEquity>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343385"
      unitRef="Share">26786459</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343386"
      unitRef="USD">27000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343387"
      unitRef="USD">268059000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343388"
      unitRef="USD">324722000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343389"
      unitRef="USD">-7018000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31"
      decimals="-4"
      id="c75343390"
      unitRef="USD">585790000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343391"
      unitRef="Share">23525</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343392"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343393"
      unitRef="USD">-902000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343394"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343395"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-01-01_2020-03-31"
      decimals="-3"
      id="c75343396"
      unitRef="USD">-902000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343398"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343399"
      unitRef="USD">3033000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343400"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343401"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-01-01_2020-03-31"
      decimals="-3"
      id="c75343402"
      unitRef="USD">3033000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodShares
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343403"
      unitRef="Share">161460</us-gaap:StockRepurchasedAndRetiredDuringPeriodShares>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343404"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343405"
      unitRef="USD">1616000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343406"
      unitRef="USD">9569000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343407"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-01-01_2020-03-31"
      decimals="-3"
      id="c75343408"
      unitRef="USD">11185000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343410"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343411"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343412"
      unitRef="USD">13984000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343413"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-03-31"
      decimals="-3"
      id="c75343414"
      unitRef="USD">13984000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343417"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343418"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343419"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-4"
      id="c75343420"
      unitRef="USD">-2980000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-01-01_2020-03-31"
      decimals="-4"
      id="c75343421"
      unitRef="USD">-2980000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2020-01-01_2020-03-31"
      decimals="-3"
      id="c75343427"
      unitRef="USD">11004000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2020-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343428"
      unitRef="Share">26648524</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-03-31_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343429"
      unitRef="USD">27000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-03-31_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343430"
      unitRef="USD">268574000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-03-31_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343431"
      unitRef="USD">329137000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343432"
      unitRef="USD">-9998000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-03-31"
      decimals="-4"
      id="c75343433"
      unitRef="USD">587740000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343434"
      unitRef="Share">96186</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343435"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-5"
      id="c75343436"
      unitRef="USD">400000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343437"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343438"
      unitRef="USD">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-5"
      id="c75343439"
      unitRef="USD">400000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343441"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343442"
      unitRef="USD">3639000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343443"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343444"
      unitRef="USD">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343445"
      unitRef="USD">3639000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodShares
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343446"
      unitRef="Share">38154</us-gaap:StockRepurchasedAndRetiredDuringPeriodShares>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343447"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343448"
      unitRef="USD">382000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343449"
      unitRef="USD">3119000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343450"
      unitRef="USD">-0</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:StockRepurchasedAndRetiredDuringPeriodValue
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343451"
      unitRef="USD">3501000</us-gaap:StockRepurchasedAndRetiredDuringPeriodValue>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343453"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343454"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343455"
      unitRef="USD">12607000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343456"
      unitRef="USD">0</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343457"
      unitRef="USD">12607000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-CommonStockMember"
      id="c75343460"
      unitRef="USD"
      xsi:nil="true"/>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343461"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343462"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343463"
      unitRef="USD">364000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343464"
      unitRef="USD">364000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343470"
      unitRef="USD">12971000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i_2020-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="INF"
      id="c75343471"
      unitRef="Share">26706556</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-06-30_StatementEquityComponentsAxis-CommonStockMember"
      decimals="-3"
      id="c75343472"
      unitRef="USD">27000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-06-30_StatementEquityComponentsAxis-AdditionalPaidInCapitalMember"
      decimals="-3"
      id="c75343473"
      unitRef="USD">272231000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-06-30_StatementEquityComponentsAxis-RetainedEarningsMember"
      decimals="-3"
      id="c75343474"
      unitRef="USD">338625000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75343475"
      unitRef="USD">-9634000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-06-30"
      decimals="-3"
      id="c75343476"
      unitRef="USD">601249000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343484"
      unitRef="USD">16627000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343485"
      unitRef="USD">26591000</us-gaap:NetIncomeLoss>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343487"
      unitRef="USD">20127000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:DepreciationDepletionAndAmortization
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343488"
      unitRef="USD">15855000</us-gaap:DepreciationDepletionAndAmortization>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343489"
      unitRef="USD">10561000</us-gaap:ShareBasedCompensation>
    <us-gaap:ShareBasedCompensation
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343490"
      unitRef="USD">6672000</us-gaap:ShareBasedCompensation>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343491"
      unitRef="USD">419000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343492"
      unitRef="USD">5651000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343493"
      unitRef="USD">-261000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343494"
      unitRef="USD">-129000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGainLoss
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343495"
      unitRef="USD">117000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGainLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGainLoss
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343496"
      unitRef="USD">-0</us-gaap:DebtSecuritiesAvailableForSaleRealizedGainLoss>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75348135"
      unitRef="USD">-7763000</us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75348136"
      unitRef="USD">0</us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343497"
      unitRef="USD">-125000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:OtherNoncashIncomeExpense
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343498"
      unitRef="USD">854000</us-gaap:OtherNoncashIncomeExpense>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343500"
      unitRef="USD">23296000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343501"
      unitRef="USD">4292000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343502"
      unitRef="USD">-1727000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343503"
      unitRef="USD">801000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-4"
      id="c75343504"
      unitRef="USD">-1810000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343505"
      unitRef="USD">1068000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343506"
      unitRef="USD">-4015000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343507"
      unitRef="USD">-1341000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343508"
      unitRef="USD">5011000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343509"
      unitRef="USD">1082000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInOtherOperatingLiabilities
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343512"
      unitRef="USD">-748000</us-gaap:IncreaseDecreaseInOtherOperatingLiabilities>
    <us-gaap:IncreaseDecreaseInOtherOperatingLiabilities
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343513"
      unitRef="USD">5793000</us-gaap:IncreaseDecreaseInOtherOperatingLiabilities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343514"
      unitRef="USD">20729000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343515"
      unitRef="USD">53417000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343517"
      unitRef="USD">23929000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343518"
      unitRef="USD">33305000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343519"
      unitRef="USD">127413000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343520"
      unitRef="USD">-0</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireOtherInvestments
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343521"
      unitRef="USD">-0</us-gaap:PaymentsToAcquireOtherInvestments>
    <us-gaap:PaymentsToAcquireOtherInvestments
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-6"
      id="c75343522"
      unitRef="USD">3000000</us-gaap:PaymentsToAcquireOtherInvestments>
    <us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343523"
      unitRef="USD">15159000</us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt>
    <us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343524"
      unitRef="USD">57212000</us-gaap:PaymentsToAcquireAvailableForSaleSecuritiesDebt>
    <us-gaap:ProceedsFromSaleOfHeldToMaturitySecurities
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343525"
      unitRef="USD">47694000</us-gaap:ProceedsFromSaleOfHeldToMaturitySecurities>
    <us-gaap:ProceedsFromSaleOfHeldToMaturitySecurities
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343526"
      unitRef="USD">0</us-gaap:ProceedsFromSaleOfHeldToMaturitySecurities>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343527"
      unitRef="USD">13725000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343528"
      unitRef="USD">28225000</us-gaap:ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343529"
      unitRef="USD">-105082000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343530"
      unitRef="USD">-65292000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343532"
      unitRef="USD">3838000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343533"
      unitRef="USD">2855000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343534"
      unitRef="USD">4209000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343535"
      unitRef="USD">3367000</us-gaap:PaymentsRelatedToTaxWithholdingForShareBasedCompensation>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-4"
      id="c75343536"
      unitRef="USD">1210000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343537"
      unitRef="USD">14686000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343538"
      unitRef="USD">275000</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:FinanceLeasePrincipalPayments
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343539"
      unitRef="USD">-0</us-gaap:FinanceLeasePrincipalPayments>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343540"
      unitRef="USD">-1856000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343541"
      unitRef="USD">-15198000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343542"
      unitRef="USD">515000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343543"
      unitRef="USD">-149000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343544"
      unitRef="USD">-85694000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343545"
      unitRef="USD">-27222000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343546"
      unitRef="USD">127603000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2019-12-31"
      decimals="-3"
      id="c75343547"
      unitRef="USD">125225000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343548"
      unitRef="USD">41909000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations
      contextRef="i_2020-06-30"
      decimals="-3"
      id="c75343549"
      unitRef="USD">98003000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations>
    <us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904961">
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;1&lt;/em&gt; &#x2013; Basis of Presentation&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The unaudited interim Consolidated Financial Statements of Proto Labs, Inc. (Protolabs, the Company, we, us or our) have been prepared in accordance with accounting principles generally accepted in the United States of America (U.S. GAAP) for interim financial information and with the instructions to Form &lt;em style="font: inherit;"&gt;10&lt;/em&gt;-Q and Article&#160;&lt;em style="font: inherit;"&gt;10&lt;/em&gt; of Regulation S-&lt;em style="font: inherit;"&gt;X.&lt;/em&gt; In the opinion of management, the accompanying financial statements reflect all adjustments necessary for a fair presentation of the Company&#x2019;s statements of financial position, results of operations and cash flows for the periods presented. Except as otherwise disclosed herein, these adjustments consist of normal, recurring items. Operating results for interim periods are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; necessarily indicative of results that &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be expected for the fiscal year as a whole.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The preparation of the financial statements in conformity with U.S. GAAP requires management to make estimates and assumptions that affect the reported amounts of assets, liabilities, revenues, expenses, and the related disclosures at the date of the financial statements and during the reporting period. Actual results could materially differ from these estimates. For further information, refer to the audited Consolidated Financial Statements and Notes thereto included in the Company&#x2019;s Annual Report on Form &lt;em style="font: inherit;"&gt;10&lt;/em&gt;-K for the year ended&#160;&lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt; as filed with the Securities and Exchange Commission (SEC) on &lt;em style="font: inherit;"&gt; February 19, 2021.&lt;/em&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The accompanying Consolidated Balance Sheet as of &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt; was derived from the audited Consolidated Financial Statements but does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; include all disclosures required by U.S. GAAP for a full set of financial statements. This Form &lt;em style="font: inherit;"&gt;10&lt;/em&gt;-Q should be read in conjunction with the Company&#x2019;s Consolidated Financial Statements and Notes included in the Annual Report on Form &lt;em style="font: inherit;"&gt;10&lt;/em&gt;-K filed on &lt;em style="font: inherit;"&gt; February 19, 2021 &lt;/em&gt;as referenced above.&lt;/p&gt;
  </us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock>
    <us-gaap:SignificantAccountingPoliciesTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904962">
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;2&lt;/em&gt; &#x2013; Recent Accounting Pronouncements&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Recently Adopted Accounting Pronouncements&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;In &lt;em style="font: inherit;"&gt; December 2019, &lt;/em&gt;the Financial Accounting Standards Board issued Accounting Standards Update (ASU) &lt;em style="font: inherit;"&gt;2019&lt;/em&gt;-&lt;em style="font: inherit;"&gt;12,&lt;/em&gt; &lt;i&gt;Income Taxes (Topic &lt;em style="font: inherit;"&gt;740&lt;/em&gt;): Simplifying the Accounting for Income Taxes&lt;/i&gt; (ASU &lt;em style="font: inherit;"&gt;2019&lt;/em&gt;-&lt;em style="font: inherit;"&gt;12&lt;/em&gt;). ASU &lt;em style="font: inherit;"&gt;2019&lt;/em&gt;-&lt;em style="font: inherit;"&gt;12&lt;/em&gt; attempts to simplify aspects of accounting for franchise taxes and enacted changes in tax laws or rates and clarifies the accounting for transactions that result in a step-up in the tax basis of goodwill. ASU &lt;em style="font: inherit;"&gt;2019&lt;/em&gt;-&lt;em style="font: inherit;"&gt;12&lt;/em&gt; is effective for public business entities for fiscal years beginning after &lt;em style="font: inherit;"&gt; December 15, 2020, &lt;/em&gt;including interim periods within that fiscal year. The Company adopted ASU &lt;em style="font: inherit;"&gt;2019&lt;/em&gt;-&lt;em style="font: inherit;"&gt;12&lt;/em&gt; on &lt;em style="font: inherit;"&gt; January 1, 2021 &lt;/em&gt;and there was &lt;em style="font: inherit;"&gt;no&lt;/em&gt; material impact on the Company&#x2019;s consolidated financial statements.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:SignificantAccountingPoliciesTextBlock>
    <us-gaap:EarningsPerShareTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904963">
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;3&lt;/em&gt; &#x2013; Net Income per Common Share&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Basic net income per share is computed based on the weighted-average number of common shares outstanding. Diluted net income per share is computed based on the weighted-average number of common shares outstanding, increased by the number of additional shares that would have been outstanding had potentially dilutive common shares been issued and reduced by the number of shares the Company could have repurchased from the proceeds from issuance of the potentially dilutive shares. Potentially dilutive shares of common stock include stock options, restricted stock units and restricted stock awards granted under stock-based compensation plans and shares committed to be purchased under the employee stock purchase plan. Performance stock units&#160;are excluded from the calculation of dilutive potential common shares until the performance conditions have been satisfied.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The table below sets forth the computation of basic and diluted net income per share:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 6pt auto 0pt; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 48%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands, except share and per share amounts)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Net income&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;12,915&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;12,607&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;16,627&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;26,591&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Basic - weighted-average shares outstanding:&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;27,735,732&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;26,660,498&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;27,600,684&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;26,718,652&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Effect of dilutive securities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 18pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Employee stock options and other&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;9,138&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;100,368&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;140,780&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;119,286&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Diluted - weighted-average shares outstanding:&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;27,744,870&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;26,760,866&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;27,741,464&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;26,837,938&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Net income per share:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 18pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Basic&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.47&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.47&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.60&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1.00&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 18pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Diluted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.47&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.47&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.60&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.99&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0pt auto 6pt; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:EarningsPerShareTextBlock>
    <us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904964">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 48%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands, except share and per share amounts)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Net income&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;12,915&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;12,607&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;16,627&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;26,591&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Basic - weighted-average shares outstanding:&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;27,735,732&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;26,660,498&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;27,600,684&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;26,718,652&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Effect of dilutive securities:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 18pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Employee stock options and other&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;9,138&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;100,368&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;140,780&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;119,286&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Diluted - weighted-average shares outstanding:&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;27,744,870&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;26,760,866&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;27,741,464&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;26,837,938&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Net income per share:&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 18pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Basic&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.47&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.47&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.60&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;1.00&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 18pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Diluted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.47&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.47&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.60&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;0.99&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75343586"
      unitRef="USD">12915000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75343587"
      unitRef="USD">12607000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343588"
      unitRef="USD">16627000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75343589"
      unitRef="USD">26591000</us-gaap:NetIncomeLoss>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2021-04-01_2021-06-30"
      decimals="INF"
      id="c75343590"
      unitRef="Share">27735732</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2020-04-01_2020-06-30"
      decimals="INF"
      id="c75343591"
      unitRef="Share">26660498</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75343592"
      unitRef="Share">27600684</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="d_2020-01-01_2020-06-30"
      decimals="INF"
      id="c75343593"
      unitRef="Share">26718652</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2021-04-01_2021-06-30"
      decimals="INF"
      id="c75343595"
      unitRef="Share">9138</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2020-04-01_2020-06-30"
      decimals="INF"
      id="c75343596"
      unitRef="Share">100368</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75343597"
      unitRef="Share">140780</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements
      contextRef="d_2020-01-01_2020-06-30"
      decimals="INF"
      id="c75343598"
      unitRef="Share">119286</us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2021-04-01_2021-06-30"
      decimals="INF"
      id="c75343599"
      unitRef="Share">27744870</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2020-04-01_2020-06-30"
      decimals="INF"
      id="c75343600"
      unitRef="Share">26760866</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75343601"
      unitRef="Share">27741464</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="d_2020-01-01_2020-06-30"
      decimals="INF"
      id="c75343602"
      unitRef="Share">26837938</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2021-04-01_2021-06-30"
      decimals="INF"
      id="c75343604"
      unitRef="USDPerShare">0.47</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2020-04-01_2020-06-30"
      decimals="INF"
      id="c75343605"
      unitRef="USDPerShare">0.47</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75343606"
      unitRef="USDPerShare">0.60</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="d_2020-01-01_2020-06-30"
      decimals="INF"
      id="c75343607"
      unitRef="USDPerShare">1.00</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2021-04-01_2021-06-30"
      decimals="INF"
      id="c75343608"
      unitRef="USDPerShare">0.47</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2020-04-01_2020-06-30"
      decimals="INF"
      id="c75343609"
      unitRef="USDPerShare">0.47</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75343610"
      unitRef="USDPerShare">0.60</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="d_2020-01-01_2020-06-30"
      decimals="INF"
      id="c75343611"
      unitRef="USDPerShare">0.99</us-gaap:EarningsPerShareDiluted>
    <us-gaap:BusinessCombinationDisclosureTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904965">
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;4&lt;/em&gt; &#x2013; Business Combinations&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;On &lt;em style="font: inherit;"&gt; January 22, 2021, &lt;/em&gt;the Company acquired all outstanding shares of &lt;em style="font: inherit;"&gt;3D&lt;/em&gt; Hubs, Inc. (&#x201c;Hubs&#x201d;), for $294.1 million, consisting of $127.4 million in cash and 863,995 shares of the Company's common stock valued at $166.7 million on the date of close. Up to an additional $52.8 million of contingent consideration is payable after closing, subject to the satisfaction of performance-based targets during fiscal year &lt;em style="font: inherit;"&gt;2021&lt;/em&gt; and fiscal year &lt;em style="font: inherit;"&gt;2022,&lt;/em&gt; consisting of up to $25.0 million in cash and up to 143,983 shares of the Company's common stock valued at $27.8 million on the date of close.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;Hubs is based in Amsterdam, Netherlands and is a leading online manufacturing platform that provides customers with on-demand access to a global network of premium manufacturing partners. The acquisition enhances the Company&#x2019;s value proposition by expanding the customer offerings, enabling the Company to more holistically serve its customers.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;The fair value of the consideration paid for this acquisition has been allocated on a preliminary basis to the assets purchased and liabilities assumed based on their estimated fair values as of the acquisition date, with any excess recorded as goodwill.&#160; The goodwill associated with the acquisition represents both the strategic and growth opportunities by significantly expanding the customer offering with a network of premium manufacturing partners. The goodwill related to the acquisition is &lt;em style="font: inherit;"&gt;not&lt;/em&gt; deductible for tax purposes.&#160;&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;The Company recorded a contingent consideration liability of $13.6 million as of the acquisition date representing the estimated fair value of the amounts payable to former shareholders, as outlined under the terms of the merger agreement, payable subject to the satisfaction of performance-based targets during fiscal year &lt;em style="font: inherit;"&gt;2021&lt;/em&gt; and fiscal year &lt;em style="font: inherit;"&gt;2022,&lt;/em&gt; consisting of up to &lt;em style="font: inherit;"&gt;$25.0&lt;/em&gt; million in cash and up to &lt;em style="font: inherit;"&gt;143,983&lt;/em&gt; shares of the Company's common stock valued at &lt;em style="font: inherit;"&gt;$27.8&lt;/em&gt; million on the date of close. The fair value of the contingent consideration (Level &lt;em style="font: inherit;"&gt;3&lt;/em&gt;) is determined using a Monte Carlo pricing model. In the &lt;em style="font: inherit;"&gt;second&lt;/em&gt; quarter of &lt;em style="font: inherit;"&gt;2021,&lt;/em&gt; the Company recorded a $7.8 million decrease to the estimated fair value of the contingent consideration liabilities, which was included as a decrease in general and administrative expense in the Consolidated Statements of Comprehensive Income. Fluctuations due to foreign currency translation have been recorded in the Consolidated Statements of Shareholders&#x2019; Equity.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;The results of Hubs since the date of acquisition have been included with Protolabs' results. Pro forma disclosures of the consolidated results of the Company with the full year effects of Hubs, as if the acquisition had occurred on &lt;em style="font: inherit;"&gt; January 1, 2020, &lt;/em&gt;are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; required and have &lt;em style="font: inherit;"&gt;not&lt;/em&gt; been separately presented since the impact to the Company's results of operations was &lt;em class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" style="font: inherit;"&gt;not&lt;/em&gt; material.&lt;/p&gt;
   &lt;p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;The acquisition has been accounted for under the acquisition method of accounting in accordance with ASC &lt;em style="font: inherit;"&gt;805,&lt;/em&gt; &lt;i&gt;Business Combinations&lt;/i&gt;. In the &lt;em style="font: inherit;"&gt;second&lt;/em&gt; quarter of &lt;em style="font: inherit;"&gt;2021,&lt;/em&gt; the Company recorded adjustments to the preliminary allocation, including a $3.9 million decrease to intangible assets, a $6.4 million increase to goodwill, a $3.3&#160;million increase to contingent consideration, a $0.5 million decrease to deferred tax liabilities, and a decrease to cash paid of $0.3 million. The adjustments were driven by changes to the preliminary valuation and finalization of the working capital calculation. As of &lt;em style="font: inherit;"&gt; June 30, 2021, &lt;/em&gt;the allocation of purchase price to assets and liabilities is preliminary. The purchase price allocation will be finalized in &lt;em style="font: inherit;"&gt;2021.&lt;/em&gt; The preliminary allocation is as follows:&lt;/p&gt;
   &lt;hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 6pt auto 0pt auto;"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Acquisition&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Assets acquired:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Current assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;2,497&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Intangible assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;30,770&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Goodwill&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;281,845&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Other long-term assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,139&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total assets acquired&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;316,251&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Liabilities assumed:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Current contingent consideration&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt"&gt;7,093&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Current liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;5,666&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Long-term contingent consideration&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt"&gt;6,507&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Long-term deferred tax liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;2,608&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Other long-term liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;255&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total liabilities assumed&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;22,129&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Net assets acquired&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;294,122&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Cash paid&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;133,847&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Cash acquired&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(6,434&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Net cash consideration&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;127,413&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Equity portion of purchase price&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;166,709&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total purchase consideration&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;294,122&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0pt auto 6pt auto;"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:BusinessCombinationDisclosureTextBlock>
    <us-gaap:BusinessCombinationConsiderationTransferred1
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-5"
      id="c75343614"
      unitRef="USD">294100000</us-gaap:BusinessCombinationConsiderationTransferred1>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-5"
      id="c75343615"
      unitRef="USD">127400000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="INF"
      id="c75343616"
      unitRef="Share">863995</us-gaap:BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued>
    <us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-5"
      id="c75343617"
      unitRef="USD">166700000</us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-5"
      id="c75343618"
      unitRef="USD">52800000</us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh>
    <us-gaap:PaymentsToAcquireBusinessesGross
      contextRef="d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember"
      decimals="-6"
      id="c75343621"
      unitRef="USD">25000000.0</us-gaap:PaymentsToAcquireBusinessesGross>
    <us-gaap:BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued
      contextRef="d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember"
      decimals="INF"
      id="c75343622"
      unitRef="Share">143983</us-gaap:BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued>
    <us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable
      contextRef="d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember"
      decimals="-5"
      id="c75343623"
      unitRef="USD">27800000</us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable>
    <us-gaap:BusinessCombinationContingentConsiderationLiability
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-5"
      id="c75343626"
      unitRef="USD">13600000</us-gaap:BusinessCombinationContingentConsiderationLiability>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
      contextRef="d_2021-04-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-5"
      id="c75343635"
      unitRef="USD">-7800000</us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1>
    <us-gaap:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles
      contextRef="d_2021-04-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-5"
      id="c75343641"
      unitRef="USD">-3900000</us-gaap:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles>
    <us-gaap:GoodwillPurchaseAccountingAdjustments
      contextRef="d_2021-04-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-5"
      id="c75343642"
      unitRef="USD">6400000</us-gaap:GoodwillPurchaseAccountingAdjustments>
    <prlb:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration
      contextRef="d_2021-04-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-5"
      id="c75343643"
      unitRef="USD">3300000</prlb:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration>
    <prlb:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities
      contextRef="d_2021-04-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-5"
      id="c75343644"
      unitRef="USD">-500000</prlb:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities>
    <prlb:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid
      contextRef="d_2021-04-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-5"
      id="c75343645"
      unitRef="USD">-300000</prlb:BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid>
    <us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock
      contextRef="d_2021-01-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember"
      id="c1904966">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 84%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Acquisition&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Assets acquired:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Current assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;2,497&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Intangible assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;30,770&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Goodwill&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;281,845&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Other long-term assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;1,139&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total assets acquired&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;316,251&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Liabilities assumed:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Current contingent consideration&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt"&gt;7,093&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Current liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;5,666&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Long-term contingent consideration&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt"&gt;6,507&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Long-term deferred tax liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;2,608&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Other long-term liabilities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;255&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total liabilities assumed&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;22,129&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Net assets acquired&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;294,122&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Cash paid&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;133,847&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Cash acquired&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(6,434&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Net cash consideration&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;127,413&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Equity portion of purchase price&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;166,709&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;"&gt;Total purchase consideration&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;294,122&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343650"
      unitRef="USD">2497000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-4"
      id="c75343651"
      unitRef="USD">30770000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets>
    <us-gaap:Goodwill
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343652"
      unitRef="USD">281845000</us-gaap:Goodwill>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343653"
      unitRef="USD">1139000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets>
    <prlb:BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343654"
      unitRef="USD">316251000</prlb:BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal>
    <prlb:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343656"
      unitRef="USD">7093000</prlb:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343657"
      unitRef="USD">5666000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities>
    <prlb:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343658"
      unitRef="USD">6507000</prlb:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343659"
      unitRef="USD">2608000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343660"
      unitRef="USD">255000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343661"
      unitRef="USD">22129000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet
      contextRef="i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343662"
      unitRef="USD">294122000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet>
    <us-gaap:PaymentsToAcquireBusinessesGross
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343663"
      unitRef="USD">133847000</us-gaap:PaymentsToAcquireBusinessesGross>
    <us-gaap:CashAcquiredFromAcquisition
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343664"
      unitRef="USD">6434000</us-gaap:CashAcquiredFromAcquisition>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343665"
      unitRef="USD">127413000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343666"
      unitRef="USD">166709000</us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable>
    <us-gaap:BusinessCombinationConsiderationTransferred1
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-3"
      id="c75343667"
      unitRef="USD">294122000</us-gaap:BusinessCombinationConsiderationTransferred1>
    <us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904967">
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;5&lt;/em&gt; &#x2013; Goodwill and Other Intangible Assets&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The changes in the carrying amount of goodwill during the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; were as follows:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 83%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30, 2021&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Balance as of the beginning of the period&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;128,752&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Goodwill acquired during the period&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;281,845&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Foreign currency translation adjustments&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;(3,406&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Balance as of the end of the period&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;407,191&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Goodwill increased $281.8 million during the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021 &lt;/em&gt;as a result of our acquisition of Hubs. Goodwill has been allocated to the acquired Hubs entities consisting of goodwill of&#160;&lt;span style="-sec-ix-hidden:c75343673"&gt;&#x20ac;106.5&lt;/span&gt; million in Europe and $152.2 million in the United States as of the date of the acquisition. The Euro denominated goodwill is translated at the end of each period using the current exchange rates resulting in a foreign currency translation adjustment that is recorded as a component of Other Comprehensive Income.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Intangible assets other than goodwill at&#160;&lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; and &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt; were as follows:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="width: 19%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30, 2021&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="width: 19%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31, 2020&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Useful&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="padding: 0px; width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted Average&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Gross&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Accumulated Amortization&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Net&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Gross&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Accumulated Amortization&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Net&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Life (in years)&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="padding: 0px; width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Useful Life Remaining (in years)&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Intangible assets with finite lives:&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 5%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 5%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 5%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 5%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Marketing assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;$930&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;$(667&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;$263&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;$930&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;$(620&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;$310&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;10.0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;2.8&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Non-compete agreement&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;853&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;(297&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;556&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;270&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;(238&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;32&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;2.0 - 5.0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3.3&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Software technology&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;13,229&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;(4,330&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;8,899&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;13,229&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;(3,645&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;9,584&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;10.0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;7.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Software platform&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;27,170&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;(1,089&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;26,081&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;10.0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;9.6&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Tradenames&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;365&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;(51&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;314&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3.0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;2.6&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Customer relationships&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;12,292&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;(6,731&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;5,561&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;10,070&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;(5,646&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;4,424&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;3.0 - 9.0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;2.3&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total intangible assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;$&lt;/td&gt;&lt;td style="width: 5%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;54,839&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;(13,165&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;$&lt;/td&gt;&lt;td style="width: 5%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;41,674&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;$&lt;/td&gt;&lt;td style="width: 5%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;24,499&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;(10,149&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;$&lt;/td&gt;&lt;td style="width: 5%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;14,350&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Intangible assets increased $30.8 million during the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021 &lt;/em&gt;as a result of our acquisition of Hubs. Intangible assets have been allocated to the acquired Hubs entities consisting of intangible assets of&#160;&lt;span style="-sec-ix-hidden:c75343677"&gt;&#x20ac;11.6&lt;/span&gt; million in Europe and $16.6 million in the United States as of the date of the acquisition. The Euro denominated intangible assets are translated at the end of each period using the current exchange rates resulting in a foreign currency translation adjustment that is recorded as a component of Other Comprehensive Income. Foreign currency losses related to intangible assets were $0.4 million as of &lt;em style="font: inherit;"&gt; June 30, 2021. &lt;/em&gt;There was no foreign currency translation impact as of &lt;em style="font: inherit;"&gt; December 31, 2020. &lt;/em&gt;Amortization expense for intangible assets was $1.5 million and $0.8&#160;million for the &lt;em style="font: inherit;"&gt;three&lt;/em&gt; months ended&#160;&lt;em style="font: inherit;"&gt; June 30, 2021 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2020&lt;/em&gt;, respectively, and $3.0 million and $1.5 million for the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2020,&lt;/em&gt; respectively.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets and current exchange rates is as follows:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 83%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="padding: 0px; width: 0%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Estimated Amortization Expense&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Remaining 2021&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,130&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;2022&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;6,259&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;2023&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;6,056&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,832&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;2025&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,750&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Thereafter&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;18,647&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total estimated amortization expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;41,674&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock>
    <us-gaap:ScheduleOfGoodwillTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904968">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 83%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30, 2021&lt;/em&gt;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Balance as of the beginning of the period&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;128,752&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Goodwill acquired during the period&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;281,845&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Foreign currency translation adjustments&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;(3,406&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Balance as of the end of the period&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;407,191&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfGoodwillTextBlock>
    <us-gaap:Goodwill
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343697"
      unitRef="USD">128752000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343698"
      unitRef="USD">281845000</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:GoodwillForeignCurrencyTranslationGainLoss
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75343699"
      unitRef="USD">-3406000</us-gaap:GoodwillForeignCurrencyTranslationGainLoss>
    <us-gaap:Goodwill
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343700"
      unitRef="USD">407191000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2021-01-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-5"
      id="c75343670"
      unitRef="USD">281800000</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_StatementGeographicalAxis-US"
      decimals="-5"
      id="c75343674"
      unitRef="USD">152200000</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904969">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="width: 19%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30, 2021&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="width: 19%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31, 2020&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Useful&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="padding: 0px; width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted Average&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Gross&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Accumulated Amortization&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Net&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Gross&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Accumulated Amortization&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Net&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Life (in years)&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="padding: 0px; width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Useful Life Remaining (in years)&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="text-indent: -9pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;"&gt;Intangible assets with finite lives:&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 5%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 5%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 5%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 5%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Marketing assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;$930&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;$(667&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;$263&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;$930&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;$(620&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;$310&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;10.0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;2.8&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Non-compete agreement&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;853&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;(297&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;556&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;270&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;(238&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;32&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;2.0 - 5.0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3.3&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Software technology&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;13,229&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;(4,330&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;8,899&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;13,229&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;(3,645&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;9,584&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;10.0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;7.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Software platform&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;27,170&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;(1,089&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;26,081&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;10.0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;9.6&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Tradenames&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;365&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;(51&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;314&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3.0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;2.6&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Customer relationships&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;12,292&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;(6,731&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;5,561&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;10,070&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;(5,646&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);"&gt;4,424&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" style="width: 7%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;3.0 - 9.0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;2.3&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 24%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total intangible assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;$&lt;/td&gt;&lt;td style="width: 5%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;54,839&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;(13,165&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;$&lt;/td&gt;&lt;td style="width: 5%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;41,674&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;$&lt;/td&gt;&lt;td style="width: 5%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;24,499&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;(10,149&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-align: right;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;$&lt;/td&gt;&lt;td style="width: 5%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;"&gt;14,350&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 3px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-4"
      id="c75343722"
      unitRef="USD">930000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-3"
      id="c75343723"
      unitRef="USD">-667000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-3"
      id="c75343724"
      unitRef="USD">263000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-4"
      id="c75343725"
      unitRef="USD">930000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-4"
      id="c75343726"
      unitRef="USD">-620000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      decimals="-4"
      id="c75343727"
      unitRef="USD">310000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      id="c75343729">P10Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-MarketingRelatedIntangibleAssetsMember"
      id="c75343731">P2Y9M18D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-3"
      id="c75343732"
      unitRef="USD">853000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-3"
      id="c75343733"
      unitRef="USD">297000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-3"
      id="c75343734"
      unitRef="USD">556000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-4"
      id="c75343735"
      unitRef="USD">270000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-3"
      id="c75343736"
      unitRef="USD">238000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      decimals="-3"
      id="c75343737"
      unitRef="USD">32000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MinimumMember"
      id="c75343738">P2Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember_RangeAxis-MaximumMember"
      id="c75343740">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-NoncompeteAgreementsMember"
      id="c75343741">P3Y3M18D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c75343742"
      unitRef="USD">13229000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-4"
      id="c75343743"
      unitRef="USD">4330000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c75343744"
      unitRef="USD">8899000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c75343745"
      unitRef="USD">13229000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c75343746"
      unitRef="USD">3645000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      decimals="-3"
      id="c75343747"
      unitRef="USD">9584000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      id="c75343749">P10Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-ComputerSoftwareIntangibleAssetMember"
      id="c75343751">P7Y</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember"
      decimals="-4"
      id="c75343752"
      unitRef="USD">27170000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember"
      decimals="-3"
      id="c75343753"
      unitRef="USD">1089000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember"
      decimals="-3"
      id="c75343754"
      unitRef="USD">26081000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember"
      decimals="-3"
      id="c75343755"
      unitRef="USD">0</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember"
      decimals="-3"
      id="c75343756"
      unitRef="USD">-0</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember"
      decimals="-3"
      id="c75343757"
      unitRef="USD">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember"
      id="c75343759">P10Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-SoftwarePlatformMember"
      id="c75343761">P9Y7M6D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="-3"
      id="c75343762"
      unitRef="USD">365000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="-3"
      id="c75343763"
      unitRef="USD">51000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="-3"
      id="c75343764"
      unitRef="USD">314000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="-3"
      id="c75343765"
      unitRef="USD">0</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="-3"
      id="c75343766"
      unitRef="USD">-0</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      decimals="-3"
      id="c75343767"
      unitRef="USD">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      id="c75343769">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-TradeNamesMember"
      id="c75343771">P2Y7M6D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c75343772"
      unitRef="USD">12292000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c75343773"
      unitRef="USD">6731000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c75343774"
      unitRef="USD">5561000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-4"
      id="c75343775"
      unitRef="USD">10070000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c75343776"
      unitRef="USD">5646000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2020-12-31_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      decimals="-3"
      id="c75343777"
      unitRef="USD">4424000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MinimumMember"
      id="c75343778">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember_RangeAxis-MaximumMember"
      id="c75343780">P9Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1
      contextRef="d_2021-01-01_2021-06-30_FiniteLivedIntangibleAssetsByMajorClassAxis-CustomerRelationshipsMember"
      id="c75343781">P2Y3M18D</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343782"
      unitRef="USD">54839000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343783"
      unitRef="USD">13165000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343784"
      unitRef="USD">41674000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343785"
      unitRef="USD">24499000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343786"
      unitRef="USD">10149000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c75343787"
      unitRef="USD">14350000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FinitelivedIntangibleAssetsAcquired1
      contextRef="d_2021-01-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-5"
      id="c75343675"
      unitRef="USD">30800000</us-gaap:FinitelivedIntangibleAssetsAcquired1>
    <us-gaap:FinitelivedIntangibleAssetsAcquired1
      contextRef="d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember_StatementGeographicalAxis-US"
      decimals="-5"
      id="c75343678"
      unitRef="USD">16600000</us-gaap:FinitelivedIntangibleAssetsAcquired1>
    <us-gaap:FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss
      contextRef="d_2021-01-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember"
      decimals="-5"
      id="c75343680"
      unitRef="USD">-400000</us-gaap:FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss>
    <us-gaap:FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss
      contextRef="d_2020-01-01_2020-12-31"
      decimals="-3"
      id="c75343681"
      unitRef="USD">0</us-gaap:FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-5"
      id="c75343682"
      unitRef="USD">1500000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-5"
      id="c75343683"
      unitRef="USD">800000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-6"
      id="c75343686"
      unitRef="USD">3000000.0</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-5"
      id="c75343687"
      unitRef="USD">1500000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904970">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 83%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="padding: 0px; width: 0%; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Estimated Amortization Expense&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Remaining 2021&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,130&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;2022&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;6,259&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;2023&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;6,056&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;2024&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,832&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;2025&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;3,750&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Thereafter&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;18,647&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total estimated amortization expense&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 14%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;41,674&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear
      contextRef="i_2021-06-30"
      decimals="-4"
      id="c75343793"
      unitRef="USD">3130000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343794"
      unitRef="USD">6259000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343795"
      unitRef="USD">6056000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343796"
      unitRef="USD">3832000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
      contextRef="i_2021-06-30"
      decimals="-4"
      id="c75343797"
      unitRef="USD">3750000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour>
    <prlb:FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343798"
      unitRef="USD">18647000</prlb:FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343799"
      unitRef="USD">41674000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FairValueDisclosuresTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904971">
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;6&lt;/em&gt; &#x2013; Fair Value Measurements&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Accounting Standards Codification, &lt;i&gt;Fair Value Measuremen&lt;/i&gt;t (ASC &lt;em style="font: inherit;"&gt;820&lt;/em&gt;), defines fair value as the exchange price that would be received for an asset or paid to transfer a liability (an exit price) in the principal or most advantageous market for the asset or liability in an orderly transaction between market participants on the measurement date. ASC &lt;em style="font: inherit;"&gt;820&lt;/em&gt; also establishes a fair value hierarchy that requires classification based on observable and unobservable inputs when measuring fair value. There are &lt;em style="font: inherit;"&gt;three&lt;/em&gt; levels of inputs that &lt;em style="font: inherit;"&gt; may &lt;/em&gt;be used to measure fair value:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;i&gt;Level &lt;/i&gt;&lt;em style="font: inherit;"&gt;1&#x2014;Quoted&lt;/em&gt; prices in active markets for identical assets or liabilities.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;i&gt;Level &lt;/i&gt;&lt;em style="font: inherit;"&gt;2&#x2014;Observable&lt;/em&gt; inputs other than Level &lt;em style="font: inherit;"&gt;1&lt;/em&gt; prices such as quoted prices for similar assets or liabilities; quoted prices in markets that are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; active; or other inputs that are observable or can be corroborated by observable market data for substantially the full term of the assets or liabilities.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;i&gt;Level &lt;/i&gt;&lt;em style="font: inherit;"&gt;3&#x2014;Unobservable&lt;/em&gt; inputs that are supported by little or &lt;em style="font: inherit;"&gt;no&lt;/em&gt; market activity and that are significant to the fair value of the assets or liabilities.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The Company's assets and liabilities that are required to be measured or disclosed at fair value on a recurring basis include cash and cash equivalents, marketable securities and contingent consideration. The Company&#x2019;s cash consists of bank deposits. The Company&#x2019;s cash equivalents measured at fair value consist of money market mutual funds. The Company determines the fair value of these investments using Level &lt;em style="font: inherit;"&gt;1&lt;/em&gt; inputs. The Company's marketable securities consist of&#160;short-term and long-term agency, municipal, corporate and other debt securities. Fair value for the corporate debt securities is primarily determined based on quoted market prices (Level &lt;em style="font: inherit;"&gt;1&lt;/em&gt;). Fair values for the U.S. municipal securities, U.S. government agency securities, certificates of deposit and U.S. treasury securities are primarily determined using dealer quotes or quoted market prices for similar securities (Level &lt;em style="font: inherit;"&gt;2&lt;/em&gt;). The Company's contingent consideration is the current fair value estimate of amounts owed to the former shareholders of Hubs and is determined using the Monte Carlo pricing model (Level &lt;em style="font: inherit;"&gt;3&lt;/em&gt;).&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The following table summarizes financial assets as of&#160;&lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; and &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt; measured at fair value on a recurring basis:&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30, 2021&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31, 2020&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 40%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 1&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 2&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 3&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 1&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 2&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 3&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Financial Assets:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;"&gt;Cash and cash equivalents&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;40,694&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;72,225&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;"&gt;Money market mutual fund&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;1,215&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;55,378&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;"&gt;Marketable securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;17,951&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;29,090&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;59,860&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;29,090&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;127,603&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;b&gt;Financial Liabilities:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-indent: 9pt;"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Contingent consideration&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,629&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;5,629&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;In the &lt;em style="font: inherit;"&gt;first&lt;/em&gt; quarter of &lt;em style="font: inherit;"&gt;2021,&lt;/em&gt; the Company sold held-to-maturity securities in order to partially fund the acquisition of Hubs. As a result of the sale, all remaining marketable securities were reclassified to available-for-sale securities and reported at fair value.&lt;/p&gt;
   &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;The Company recorded a contingent consideration liability at the acquisition date of Hubs representing the amounts payable to former shareholders, as outlined under the terms of the merger agreement, payable subject to the satisfaction of performance-based targets during fiscal year &lt;em style="font: inherit;"&gt;2021&lt;/em&gt; and fiscal year &lt;em style="font: inherit;"&gt;2022,&lt;/em&gt; consisting of up to $25.0 million in cash and up to 143,983 shares of the Company's common stock valued at $27.8 million on the date of close. The fair value of the contingent consideration (Level &lt;em style="font: inherit;"&gt;3&lt;/em&gt;) is determined using a Monte Carlo pricing model. Subsequent changes in the fair value of the contingent consideration liabilities have been recorded in the Consolidated Statements of Comprehensive Income. Fluctuations due to foreign currency translation have been recorded in the Consolidated Statements of Shareholders&#x2019; Equity.&lt;/p&gt;
  </us-gaap:FairValueDisclosuresTextBlock>
    <us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904972">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30, 2021&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="10" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31, 2020&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 40%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 1&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 2&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 3&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 1&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 2&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Level 3&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Financial Assets:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;"&gt;Cash and cash equivalents&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;40,694&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;72,225&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;"&gt;Money market mutual fund&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;1,215&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;55,378&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;"&gt;Marketable securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;17,951&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;29,090&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;59,860&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;29,090&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;127,603&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;&lt;b&gt;Financial Liabilities:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-indent: 9pt;"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Contingent consideration&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;5,629&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Total&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;5,629&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 7%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343835"
      unitRef="USD">40694000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343836"
      unitRef="USD">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343837"
      unitRef="USD">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343838"
      unitRef="USD">72225000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343839"
      unitRef="USD">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343840"
      unitRef="USD">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i_2021-06-30_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343841"
      unitRef="USD">1215000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i_2021-06-30_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343842"
      unitRef="USD">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i_2021-06-30_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343843"
      unitRef="USD">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343844"
      unitRef="USD">55378000</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343845"
      unitRef="USD">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:CashAndCashEquivalentsFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByAssetClassAxis-MoneyMarketFundsMember_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343846"
      unitRef="USD">0</us-gaap:CashAndCashEquivalentsFairValueDisclosure>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343847"
      unitRef="USD">17951000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-4"
      id="c75343848"
      unitRef="USD">29090000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343849"
      unitRef="USD">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343850"
      unitRef="USD">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343851"
      unitRef="USD">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343852"
      unitRef="USD">0</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-4"
      id="c75343853"
      unitRef="USD">59860000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-4"
      id="c75343854"
      unitRef="USD">29090000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343855"
      unitRef="USD">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343856"
      unitRef="USD">127603000</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343857"
      unitRef="USD">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:AssetsFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343858"
      unitRef="USD">0</us-gaap:AssetsFairValueDisclosure>
    <us-gaap:BusinessCombinationContingentConsiderationLiability
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343860"
      unitRef="USD">0</us-gaap:BusinessCombinationContingentConsiderationLiability>
    <us-gaap:BusinessCombinationContingentConsiderationLiability
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343861"
      unitRef="USD">0</us-gaap:BusinessCombinationContingentConsiderationLiability>
    <us-gaap:BusinessCombinationContingentConsiderationLiability
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343862"
      unitRef="USD">5629000</us-gaap:BusinessCombinationContingentConsiderationLiability>
    <us-gaap:BusinessCombinationContingentConsiderationLiability
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343863"
      unitRef="USD">0</us-gaap:BusinessCombinationContingentConsiderationLiability>
    <us-gaap:BusinessCombinationContingentConsiderationLiability
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343864"
      unitRef="USD">0</us-gaap:BusinessCombinationContingentConsiderationLiability>
    <us-gaap:BusinessCombinationContingentConsiderationLiability
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343865"
      unitRef="USD">0</us-gaap:BusinessCombinationContingentConsiderationLiability>
    <us-gaap:LiabilitiesFairValueDisclosure
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343866"
      unitRef="USD">0</us-gaap:LiabilitiesFairValueDisclosure>
    <us-gaap:LiabilitiesFairValueDisclosure
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343867"
      unitRef="USD">0</us-gaap:LiabilitiesFairValueDisclosure>
    <us-gaap:LiabilitiesFairValueDisclosure
      contextRef="i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343868"
      unitRef="USD">5629000</us-gaap:LiabilitiesFairValueDisclosure>
    <us-gaap:LiabilitiesFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343869"
      unitRef="USD">0</us-gaap:LiabilitiesFairValueDisclosure>
    <us-gaap:LiabilitiesFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel2Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343870"
      unitRef="USD">0</us-gaap:LiabilitiesFairValueDisclosure>
    <us-gaap:LiabilitiesFairValueDisclosure
      contextRef="i_2020-12-31_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel3Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember"
      decimals="-3"
      id="c75343871"
      unitRef="USD">0</us-gaap:LiabilitiesFairValueDisclosure>
    <us-gaap:PaymentsToAcquireBusinessesGross
      contextRef="d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember"
      decimals="-6"
      id="c75343818"
      unitRef="USD">25000000.0</us-gaap:PaymentsToAcquireBusinessesGross>
    <us-gaap:BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued
      contextRef="d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember"
      decimals="INF"
      id="c75343819"
      unitRef="Share">143983</us-gaap:BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued>
    <us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable
      contextRef="d_2021-01-22_2021-12-31_BusinessAcquisitionAxis-Acquired3dHubsMember_RangeAxis-MaximumMember_StatementScenarioAxis-ScenarioForecastMember"
      decimals="-5"
      id="c75343820"
      unitRef="USD">27800000</us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable>
    <us-gaap:InvestmentTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904973">
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;7&lt;/em&gt; &#x2013; Marketable Securities&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The Company invests in short-term and long-term agency, municipal, corporate and other debt securities. As of &lt;em style="font: inherit;"&gt; June 30, 2021 &lt;/em&gt;the securities are categorized as available-for-sale and are recorded at fair value. As of &lt;em style="font: inherit;"&gt; December 31, 2020, &lt;/em&gt;the securities were categorized as held-to-maturity and were recorded at amortized cost, net of an allowance for credit losses. The change in categorization was a result of the sale of securities in the &lt;em style="font: inherit;"&gt;first&lt;/em&gt; quarter of &lt;em style="font: inherit;"&gt;2021&lt;/em&gt; in order to partially fund the acquisition of Hubs and did &lt;em style="font: inherit;"&gt;not&lt;/em&gt; have a material impact on our financial statements. The following table summarizes information regarding the Company&#x2019;s short-term and long-term marketable securities as of&#160;&lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; and &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="14" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30, 2021&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 56%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Cost&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Gains&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Losses&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;U.S. municipal securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;20,968&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;43&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(17&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;20,994&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Corporate debt securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;19,062&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;68&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(29&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;19,101&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;U.S. government agency securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;1,500&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(2&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;1,498&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Certificates of deposit/time deposits&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;5,394&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;54&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;5,448&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total marketable securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;46,924&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;165&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;(48&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;47,041&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

   &lt;hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="14" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31, 2020&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 56%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Cost&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Gains&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Losses&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;U.S. municipal securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;25,003&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;83&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;25,084&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Corporate debt securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;42,048&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;211&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(11&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;42,248&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;U.S. government agency securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;18,500&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(10&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;18,496&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Certificates of deposit/time deposits&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,395&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;93&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,488&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Commercial paper&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;2,499&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;2,499&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total marketable securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;93,445&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;393&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;(23&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;93,815&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Fair values for the corporate debt securities are primarily determined based on quoted market prices (Level &lt;em style="font: inherit;"&gt;1&lt;/em&gt;). Fair values for the U.S. municipal securities, U.S. government agency securities, certificates of deposit and U.S. treasury securities are primarily determined using dealer quotes or quoted market prices for similar securities (Level &lt;em style="font: inherit;"&gt;2&lt;/em&gt;).&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;During the &lt;em style="font: inherit;"&gt;first&lt;/em&gt; quarter of &lt;em style="font: inherit;"&gt;2020,&lt;/em&gt; the Company adopted the FASB ASU &lt;em style="font: inherit;"&gt;2016&lt;/em&gt;-&lt;em style="font: inherit;"&gt;13,&lt;/em&gt; &lt;i&gt;Financial Instruments &#x2013; Credit Losses.&lt;/i&gt; The Company calculated the expected credit loss for each security in its portfolio using the probability-of-default method. The Company concluded the adoption of the guidance had &lt;em style="font: inherit;"&gt;no&lt;/em&gt; material impact on its consolidated financial statements.&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Classification of marketable securities as current or non-current is based upon the security&#x2019;s maturity date as of the date of these financial statements.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The&#160;&lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; balance of available-for-sale debt securities by contractual maturity is shown in the following table at fair value. Actual maturities &lt;em style="font: inherit;"&gt; may &lt;/em&gt;differ from contractual maturities because the issuers of the securities &lt;em style="font: inherit;"&gt; may &lt;/em&gt;have the right to prepay obligations without prepayment penalties.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;June 30,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Due in one year or less&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;18,341&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Due after one year through five years&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;28,700&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total marketable securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;47,041&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
  </us-gaap:InvestmentTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock
      contextRef="d_2021-01-01_2021-06-30"
      id="c1A8819B9-F2E6-4ECB-B8DB-60507B9A62D9">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="14" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30, 2021&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 56%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Cost&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Gains&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Losses&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;U.S. municipal securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;20,968&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;43&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(17&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;20,994&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Corporate debt securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;19,062&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;68&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(29&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;19,101&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;U.S. government agency securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;1,500&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(2&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;1,498&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Certificates of deposit/time deposits&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;5,394&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;54&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;5,448&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total marketable securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;46,924&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;165&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;(48&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;47,041&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="14" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;December 31, 2020&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 56%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Cost&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Gains&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Unrealized Losses&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;U.S. municipal securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;25,003&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;83&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(2&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;25,084&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Corporate debt securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;42,048&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;211&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(11&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;42,248&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;U.S. government agency securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;18,500&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;6&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;(10&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;18,496&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Certificates of deposit/time deposits&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,395&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;93&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;5,488&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Commercial paper&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;2,499&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;2,499&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total marketable securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;93,445&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;393&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;(23&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 8%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;93,815&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i_2021-06-30_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c75343892"
      unitRef="USD">20968000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i_2021-06-30_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c75343893"
      unitRef="USD">43000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i_2021-06-30_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c75343894"
      unitRef="USD">17000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2021-06-30_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c75343895"
      unitRef="USD">20994000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i_2021-06-30_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c75343896"
      unitRef="USD">19062000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i_2021-06-30_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c75343897"
      unitRef="USD">68000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i_2021-06-30_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c75343898"
      unitRef="USD">29000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2021-06-30_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c75343899"
      unitRef="USD">19101000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i_2021-06-30_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-5"
      id="c75343900"
      unitRef="USD">1500000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i_2021-06-30_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c75343901"
      unitRef="USD">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i_2021-06-30_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c75343902"
      unitRef="USD">2000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2021-06-30_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c75343903"
      unitRef="USD">1498000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i_2021-06-30_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c75343904"
      unitRef="USD">5394000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i_2021-06-30_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c75343905"
      unitRef="USD">54000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i_2021-06-30_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c75343906"
      unitRef="USD">-0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2021-06-30_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c75343907"
      unitRef="USD">5448000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343908"
      unitRef="USD">46924000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343909"
      unitRef="USD">165000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343910"
      unitRef="USD">48000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343911"
      unitRef="USD">47041000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c75343920"
      unitRef="USD">25003000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c75343921"
      unitRef="USD">83000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c75343922"
      unitRef="USD">2000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USStatesAndPoliticalSubdivisionsMember"
      decimals="-3"
      id="c75343923"
      unitRef="USD">25084000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c75343924"
      unitRef="USD">42048000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c75343925"
      unitRef="USD">211000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c75343926"
      unitRef="USD">11000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CorporateDebtSecuritiesMember"
      decimals="-3"
      id="c75343927"
      unitRef="USD">42248000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-5"
      id="c75343928"
      unitRef="USD">18500000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c75343929"
      unitRef="USD">6000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-4"
      id="c75343930"
      unitRef="USD">10000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2020-12-31_FinancialInstrumentAxis-USGovernmentAgenciesDebtSecuritiesMember"
      decimals="-3"
      id="c75343931"
      unitRef="USD">18496000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2020-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c75343932"
      unitRef="USD">5395000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2020-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c75343933"
      unitRef="USD">93000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2020-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c75343934"
      unitRef="USD">-0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2020-12-31_CashAndCashEquivalentsAxis-BankTimeDepositsMember"
      decimals="-3"
      id="c75343935"
      unitRef="USD">5488000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c75343936"
      unitRef="USD">2499000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c75343937"
      unitRef="USD">0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c75343938"
      unitRef="USD">-0</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2020-12-31_FinancialInstrumentAxis-CommercialPaperNotIncludedWithCashAndCashEquivalentsMember"
      decimals="-3"
      id="c75343939"
      unitRef="USD">2499000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:HeldToMaturitySecurities
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343940"
      unitRef="USD">93445000</us-gaap:HeldToMaturitySecurities>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343941"
      unitRef="USD">393000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain>
    <us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343942"
      unitRef="USD">23000</us-gaap:HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss>
    <us-gaap:HeldToMaturitySecuritiesFairValue
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343943"
      unitRef="USD">93815000</us-gaap:HeldToMaturitySecuritiesFairValue>
    <us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904976">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;June 30,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 85%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Due in one year or less&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;18,341&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Due after one year through five years&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;28,700&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Total marketable securities&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;47,041&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343946"
      unitRef="USD">18341000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue
      contextRef="i_2021-06-30"
      decimals="-5"
      id="c75343947"
      unitRef="USD">28700000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343948"
      unitRef="USD">47041000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:InventoryDisclosureTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904977">
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;8&lt;/em&gt; &#x2013; Inventory &lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Inventory consists primarily of raw materials, which are recorded at the lower of cost or market using the standard cost method, which approximates &lt;em style="font: inherit;"&gt;first&lt;/em&gt;-in, &lt;em style="font: inherit;"&gt;first&lt;/em&gt;-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The Company&#x2019;s inventory consisted of the following as of the dates indicated:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 977px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 13px;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;June 30,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 977px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 13px;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 977px; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Total inventory&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 13px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;9,395&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;11,122&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 977px; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Allowance for obsolescence&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 13px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;(284&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;(260&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 977px;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Inventory, net of allowance&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 13px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;9,111&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;10,862&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:InventoryDisclosureTextBlock>
    <us-gaap:ScheduleOfInventoryCurrentTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904978">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 977px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 13px;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;June 30,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 977px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 13px;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 977px; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Total inventory&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 13px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;9,395&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;11,122&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 977px; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Allowance for obsolescence&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 13px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;(284&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;(260&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 977px;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Inventory, net of allowance&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 13px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;9,111&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 12%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;10,862&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfInventoryCurrentTableTextBlock>
    <us-gaap:InventoryGross
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343957"
      unitRef="USD">9395000</us-gaap:InventoryGross>
    <us-gaap:InventoryGross
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343958"
      unitRef="USD">11122000</us-gaap:InventoryGross>
    <us-gaap:InventoryValuationReserves
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343959"
      unitRef="USD">284000</us-gaap:InventoryValuationReserves>
    <us-gaap:InventoryValuationReserves
      contextRef="i_2020-12-31"
      decimals="-4"
      id="c75343960"
      unitRef="USD">260000</us-gaap:InventoryValuationReserves>
    <us-gaap:InventoryNet
      contextRef="i_2021-06-30"
      decimals="-3"
      id="c75343961"
      unitRef="USD">9111000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i_2020-12-31"
      decimals="-3"
      id="c75343962"
      unitRef="USD">10862000</us-gaap:InventoryNet>
    <us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904979">
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;9&lt;/em&gt; &#x2013; Stock-Based Compensation&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Under the Company&#x2019;s &lt;em style="font: inherit;"&gt;2012&lt;/em&gt; Long-Term Incentive Plan, as amended (the &lt;em style="font: inherit;"&gt;2012&lt;/em&gt; Plan), the Company has the ability to grant stock options, stock appreciation rights (SARs), restricted stock, restricted stock units, other stock-based awards and cash incentive awards. Awards under the &lt;em style="font: inherit;"&gt;2012&lt;/em&gt; Plan have a maximum term of &lt;span style="-sec-ix-hidden:c75343967"&gt;ten&lt;/span&gt; years from the date of grant. The compensation committee &lt;em style="font: inherit;"&gt; may &lt;/em&gt;provide that the vesting or payment of any award will be subject to the attainment of specified performance measures in addition to the satisfaction of any continued service requirements and the compensation committee will determine whether such measures have been achieved. The per-share exercise price of stock options and SARs granted under the &lt;em style="font: inherit;"&gt;2012&lt;/em&gt; Plan generally &lt;em style="font: inherit;"&gt; may &lt;/em&gt;&lt;em style="font: inherit;"&gt;not&lt;/em&gt; be less than the fair market value of a share of our common stock on the date of the grant.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Employee Stock Purchase Plan&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The Company&#x2019;s &lt;em style="font: inherit;"&gt;2012&lt;/em&gt; Employee Stock Purchase Plan (ESPP) allows eligible employees to purchase a variable number of shares of the Company&#x2019;s common stock each offering period at a discount through payroll deductions of up to 15 percent of their eligible compensation, subject to plan limitations. The ESPP provides for &lt;span style="-sec-ix-hidden:c75343972"&gt;six&lt;/span&gt;-month offering periods with a single purchase period ending &lt;em style="font: inherit;"&gt; May&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;15&lt;/em&gt; and &lt;em style="font: inherit;"&gt; November&#160;&lt;/em&gt;&lt;em style="font: inherit;"&gt;15,&lt;/em&gt; respectively. At the end of each offering period, employees are able to purchase shares at 85 percent of the lower of the fair market value of the Company&#x2019;s common stock on the &lt;em style="font: inherit;"&gt;first&lt;/em&gt; trading day of the offering period or on the last trading day of the offering period.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Stock-Based Compensation Expense&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Stock-based compensation expense was $4.9 million and $3.6&#160;million for the &lt;em style="font: inherit;"&gt;three&lt;/em&gt; months ended&#160;&lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2020&lt;/em&gt;, respectively, and $10.6 million and $6.7 million for the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021 &lt;/em&gt;and &lt;em style="font: inherit;"&gt;2020,&lt;/em&gt; respectively.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Stock Options&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The following table summarizes stock option activity during the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt;:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted-&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Average&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Stock Options&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Exercise Price&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Options outstanding at December 31, 2020&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;229,531&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;86.46&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Granted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;57,901&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;128.14&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Exercised&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(28,991&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;58.78&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;(8,547&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;101.65&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Options outstanding at June 30, 2021&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;249,894&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;98.81&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Exercisable at June 30, 2021&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;116,452&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;81.38&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The outstanding options generally have a term of &lt;span style="-sec-ix-hidden:c75343986"&gt;ten&lt;/span&gt; years. For employees, options granted become exercisable ratably over the vesting period, which is generally a period from &lt;span style="-sec-ix-hidden:c75343987"&gt;four&lt;/span&gt; to &lt;span style="-sec-ix-hidden:c75343988"&gt;five&lt;/span&gt; years, beginning on the &lt;em style="font: inherit;"&gt;first&lt;/em&gt; anniversary of the grant date, subject to the employee&#x2019;s continuing service to the Company. For the board of directors, options generally become exercisable in full on the &lt;em style="font: inherit;"&gt;first&lt;/em&gt; anniversary of the grant date.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The weighted-average grant date fair value of options that were granted during the&#160;&lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; was $57.26.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The following table provides the assumptions used in the Black-Scholes pricing model valuation of options during the&#160;&lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2020&lt;/em&gt;:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: bottom; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;b&gt;Six Months Ended June 30,&lt;/b&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;b&gt;2021&lt;/b&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;b&gt;2020&lt;/b&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(204, 238, 255); font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Risk-free interest rate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.80 - 1.12%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.50 - 1.47%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(255, 255, 255); font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected life (years)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.25&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.25&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(204, 238, 255); font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected volatility&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;45.28 - 45.53%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;42.40 - 43.83%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(255, 255, 255); font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected dividend yield&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;As of &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt;, there was $5.8 million of unrecognized compensation expense related to unvested stock options, which is expected to be recognized over a weighted-average period of 3.0&#160;years.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Restricted Stock &lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Restricted stock awards&#160;are share-settled awards and restrictions lapse ratably over the vesting period, which is generally a period from &lt;span style="-sec-ix-hidden:c75343998"&gt;three&lt;/span&gt; to &lt;span style="-sec-ix-hidden:c75343999"&gt;five&lt;/span&gt; years, beginning on the &lt;em style="font: inherit;"&gt;first&lt;/em&gt; anniversary of the grant date, subject to the employee's continuing service to the Company. For the board of directors, restrictions generally lapse in full on the &lt;em style="font: inherit;"&gt;first&lt;/em&gt; anniversary of the grant date.&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The following table summarizes restricted stock activity during the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt;:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted-&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Average&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Grant Date&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Restricted&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Stock&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Per Share&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Restricted stock at December 31, 2020&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;307,199&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;98.87&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Granted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;178,398&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;133.67&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(113,315&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;91.10&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;(14,525&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;105.72&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Restricted stock at June 30, 2021&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;357,757&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;118.41&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;As of &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt;, there was $36.0 million of unrecognized compensation expense related to non-vested restricted stock, which is expected to be recognized over a weighted-average period of 2.8&#160;years.&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Performance Stock &lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Performance stock units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between &lt;span style="-sec-ix-hidden:c75344006"&gt;0&lt;/span&gt; percent&#160;and 150 percent&#160;of that target number capable of being earned and vesting at the end of a &lt;span style="-sec-ix-hidden:c75344008"&gt;three&lt;/span&gt;-year performance period depending on the Company&#x2019;s performance in the final year of the performance period and the award recipient&#x2019;s continued employment. The Company&#x2019;s PSUs granted from &lt;em style="font: inherit;"&gt;2017&lt;/em&gt; to &lt;em style="font: inherit;"&gt;2019&lt;/em&gt; and certain PSUs granted in &lt;em style="font: inherit;"&gt;2021&lt;/em&gt; are based on performance conditions and the related compensation cost is based on the probability that the performance conditions will be achieved. The Company&#x2019;s PSUs granted in &lt;em style="font: inherit;"&gt;2020&lt;/em&gt; and certain PSUs granted in &lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&#160;are based on market conditions and the related compensation cost is based on the fair value at grant date calculated using a Monte Carlo pricing model.&lt;/p&gt;
   &lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The following table summarizes performance stock activity during the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt;:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted-&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Average&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Grant Date&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Performance&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Stock&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Per Share&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Performance stock at December 31, 2020&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;19,956&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;118.66&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Granted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;15,078&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;203.64&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="margin: 0px; padding-left: 9pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-indent: -9pt;"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="margin: 0px; padding-left: 9pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-indent: -9pt;"&gt;Performance change&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="margin: 0px; padding-left: 9pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-indent: -18pt;"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;(4,184&lt;/td&gt;&lt;td style="padding: 0px; width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;99.59&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Performance stock at June 30, 2021&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;30,850&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;160.19&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin: 0pt 7.2pt; text-align: left; text-indent: -9pt;"&gt;The following table provides the assumptions used in the Monte Carlo pricing model valuation of PSUs during the &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2020&lt;/em&gt;:&#160;&lt;/p&gt;
   &lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 6pt auto 0pt auto;"/&gt;
   &lt;p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Risk-free interest rate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.22&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;1.41&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected life (years)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;2.87&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;2.88&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected volatility&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;51.40&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;38.70&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected dividend yield&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0pt auto 0pt auto;"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;As of &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt;, there was $3.2 million of unrecognized compensation expense related to non-vested performance stock, which is expected to be recognized over a weighted-average period of 2.4&#160;years.&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Employee Stock Purchase Plan&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The following table presents the assumptions used to estimate the fair value of the ESPP during the&#160;&lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2020&lt;/em&gt;:&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: bottom;"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;Six Months Ended June 30,&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom;"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;2021&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;2020&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Risk-free interest rate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.06 - 0.12%&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.17 - 1.59%&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected life (months)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.00&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.00&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected volatility&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;50.85 - 65.53%&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;42.63 - 59.99%&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected dividend yield&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0%&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0%&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-ESPPMember"
      decimals="2"
      id="c75343971"
      unitRef="Pure">0.15</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-ESPPMember"
      decimals="2"
      id="c75343975"
      unitRef="Pure">0.85</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-5"
      id="c75343977"
      unitRef="USD">4900000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-5"
      id="c75343978"
      unitRef="USD">3600000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-5"
      id="c75343981"
      unitRef="USD">10600000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-5"
      id="c75343982"
      unitRef="USD">6700000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904980">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted-&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Average&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Stock Options&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Exercise Price&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Options outstanding at December 31, 2020&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;229,531&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;86.46&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Granted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;57,901&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;128.14&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Exercised&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(28,991&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;58.78&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;(8,547&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;101.65&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Options outstanding at June 30, 2021&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;249,894&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;98.81&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;td&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Exercisable at June 30, 2021&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;116,452&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;81.38&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c75344039"
      unitRef="Share">229531</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2020-12-31"
      decimals="INF"
      id="c75344040"
      unitRef="USDPerShare">86.46</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75344041"
      unitRef="Share">57901</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75344042"
      unitRef="USDPerShare">128.14</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75344043"
      unitRef="Share">28991</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75344044"
      unitRef="USDPerShare">58.78</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75344045"
      unitRef="Share">8547</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75344046"
      unitRef="USDPerShare">101.65</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i_2021-06-30"
      decimals="INF"
      id="c75344047"
      unitRef="Share">249894</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i_2021-06-30"
      decimals="INF"
      id="c75344048"
      unitRef="USDPerShare">98.81</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
      contextRef="i_2021-06-30"
      decimals="INF"
      id="c75344049"
      unitRef="Share">116452</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
      contextRef="i_2021-06-30"
      decimals="INF"
      id="c75344050"
      unitRef="USDPerShare">81.38</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2021-01-01_2021-06-30"
      decimals="INF"
      id="c75343992"
      unitRef="USDPerShare">57.26</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904981">
    &lt;table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: bottom; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;b&gt;Six Months Ended June 30,&lt;/b&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;b&gt;2021&lt;/b&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"&gt;&lt;b&gt;&lt;b&gt;2020&lt;/b&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(204, 238, 255); font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Risk-free interest rate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.80 - 1.12%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.50 - 1.47%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(255, 255, 255); font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected life (years)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.25&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.25&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(204, 238, 255); font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected volatility&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;45.28 - 45.53%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;42.40 - 43.83%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(255, 255, 255); font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected dividend yield&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="3"
      id="c75344051"
      unitRef="Pure">0.0080</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c75344053"
      unitRef="Pure">0.0112</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="3"
      id="c75344054"
      unitRef="Pure">0.0050</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c75344056"
      unitRef="Pure">0.0147</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember"
      id="c75344058">P6Y3M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember"
      id="c75344061">P6Y3M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c75344063"
      unitRef="Pure">0.4528</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c75344065"
      unitRef="Pure">0.4553</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MinimumMember"
      decimals="3"
      id="c75344066"
      unitRef="Pure">0.4240</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c75344068"
      unitRef="Pure">0.4383</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c75344070"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-3"
      id="c75344073"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="i_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember"
      decimals="-5"
      id="c75343995"
      unitRef="USD">5800000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember"
      id="c75343996">P3Y</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904982">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted-&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Average&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Grant Date&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Restricted&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Stock&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Per Share&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Restricted stock at December 31, 2020&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;307,199&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;98.87&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Granted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;178,398&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;133.67&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;(113,315&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;91.10&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;(14,525&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;105.72&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Restricted stock at June 30, 2021&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;357,757&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;118.41&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i_2020-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c75344085"
      unitRef="Share">307199</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2020-12-31_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c75344086"
      unitRef="USDPerShare">98.87</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c75344087"
      unitRef="Share">178398</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c75344088"
      unitRef="USDPerShare">133.67</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c75344089"
      unitRef="Share">113315</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c75344090"
      unitRef="USDPerShare">91.10</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c75344091"
      unitRef="Share">14525</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c75344092"
      unitRef="USDPerShare">105.72</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i_2021-06-30_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c75344093"
      unitRef="Share">357757</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2021-06-30_AwardTypeAxis-RestrictedStockMember"
      decimals="INF"
      id="c75344094"
      unitRef="USDPerShare">118.41</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="i_2021-06-30_AwardTypeAxis-RestrictedStockMember"
      decimals="-6"
      id="c75344003"
      unitRef="USD">36000000.0</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-RestrictedStockMember"
      id="c75344004">P2Y9M18D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit
      contextRef="i_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="1"
      id="c75344007"
      unitRef="Pure">1.50</prlb:PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit>
    <us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904983">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Weighted-&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Average&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;em style="font: inherit;"&gt;&#160;&lt;/em&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Grant Date&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Performance&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Fair Value&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Stock&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;Per Share&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="width: 68%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;Performance stock at December 31, 2020&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;19,956&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;118.66&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Granted&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;15,078&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;203.64&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="margin: 0px; padding-left: 9pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-indent: -9pt;"&gt;Restrictions lapsed&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="margin: 0px; padding-left: 9pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-indent: -9pt;"&gt;Performance change&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;-&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="margin: 0px; padding-left: 9pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="margin: 0pt 0pt 0pt 9pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; text-indent: -18pt;"&gt;Forfeited&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;(4,184&lt;/td&gt;&lt;td style="padding: 0px; width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;99.59&lt;/td&gt;&lt;td style="width: 1%; padding-bottom: 1px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Performance stock at June 30, 2021&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;30,850&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 13%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;160.19&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c75344105"
      unitRef="Share">19956</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2020-12-31_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c75344106"
      unitRef="USDPerShare">118.66</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c75344107"
      unitRef="Share">15078</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c75344108"
      unitRef="USDPerShare">203.64</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c75344109"
      unitRef="Share">-0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c75344110"
      unitRef="USDPerShare">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c75344111"
      unitRef="Share">0</prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange>
    <prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c75344112"
      unitRef="USDPerShare">0</prlb:SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c75344113"
      unitRef="Share">4184</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c75344114"
      unitRef="USDPerShare">99.59</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions
      contextRef="i_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c75344115"
      unitRef="Share">30850</us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="INF"
      id="c75344116"
      unitRef="USDPerShare">160.19</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <prlb:ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904984">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Risk-free interest rate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.22&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;1.41&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected life (years)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;2.87&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;2.88&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected volatility&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;51.40&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;38.70&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected dividend yield&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;%&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt;%&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </prlb:ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="4"
      id="c75344121"
      unitRef="Pure">0.0022</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="4"
      id="c75344122"
      unitRef="Pure">0.0141</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      id="c75344123">P2Y10M13D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-PerformanceSharesMember"
      id="c75344124">P2Y10M17D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="3"
      id="c75344125"
      unitRef="Pure">0.5140</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="3"
      id="c75344126"
      unitRef="Pure">0.3870</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="-3"
      id="c75344127"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2020-01-01_2020-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="-3"
      id="c75344128"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized
      contextRef="i_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      decimals="-5"
      id="c75344017"
      unitRef="USD">3200000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember"
      id="c75344018">P2Y4M24D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904985">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="vertical-align: bottom;"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;Six Months Ended June 30,&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom;"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;2021&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;2020&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt; width: 68%;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Risk-free interest rate&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.06 - 0.12%&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0.17 - 1.59%&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected life (months)&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.00&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;6.00&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected volatility&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;50.85 - 65.53%&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;42.63 - 59.99%&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;td style="font-family: Times New Roman; font-size: 10pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"&gt;Expected dividend yield&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0%&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;"&gt;0%&lt;/td&gt;&lt;td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c75344129"
      unitRef="Pure">0.0006</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c75344131"
      unitRef="Pure">0.0012</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c75344132"
      unitRef="Pure">0.0017</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c75344134"
      unitRef="Pure">0.0159</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember"
      id="c75344136">P6M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember"
      id="c75344139">P6M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c75344141"
      unitRef="Pure">0.5085</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c75344143"
      unitRef="Pure">0.6553</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MinimumMember"
      decimals="4"
      id="c75344144"
      unitRef="Pure">0.4263</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember_RangeAxis-MaximumMember"
      decimals="4"
      id="c75344146"
      unitRef="Pure">0.5999</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember"
      decimals="-3"
      id="c75344148"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="d_2020-01-01_2020-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember"
      decimals="-3"
      id="c75344151"
      unitRef="Pure">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:DisclosureOfReclassificationAmountTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904986">
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;10&lt;/em&gt; &#x2013; Accumulated Other Comprehensive Income (Loss)&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Other comprehensive income (loss) is comprised of foreign currency translation adjustments and net unrealized gains (losses) on investments in securities. The following table presents the changes in accumulated other comprehensive income (loss) balances during the&#160;&lt;em style="font: inherit;"&gt;three&lt;/em&gt; and &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2020&lt;/em&gt;:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 0pt;"&gt;Balance at beginning of period&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(10,096&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(9,998&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(3,420&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(7,018&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-indent: 9pt;"&gt;&lt;i&gt;Foreign currency translation adjustments&lt;/i&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;"&gt;Other comprehensive income (loss) before reclassifications&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;2,030&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;364&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(4,812&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(2,616&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: 9pt;"&gt;Amounts reclassified from accumulated other comprehensive loss&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: 9pt;"&gt;Net current-period other comprehensive income (loss)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,030&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;364&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(4,812&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(2,616&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-indent: 9pt;"&gt;&lt;i&gt;Net unrealized gains (losses) on investments in securities&lt;/i&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;"&gt;Other comprehensive income (loss) before reclassifications&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(49&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;117&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: 9pt;"&gt;Amounts reclassified from accumulated other comprehensive loss&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: 9pt;"&gt;Net current-period other comprehensive income (loss)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(49&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;117&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;Balance at end of period&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(8,115&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(9,634&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(8,115&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(9,634&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;)&lt;/td&gt;
      &lt;/tr&gt;

     &lt;/tbody&gt;
    &lt;/table&gt;

   &lt;p style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
  </us-gaap:DisclosureOfReclassificationAmountTextBlock>
    <us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904987">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;
     &lt;tbody&gt;
      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 0pt;"&gt;Balance at beginning of period&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(10,096&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(9,998&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(3,420&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(7,018&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-indent: 9pt;"&gt;&lt;i&gt;Foreign currency translation adjustments&lt;/i&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;"&gt;Other comprehensive income (loss) before reclassifications&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;2,030&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;364&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(4,812&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(2,616&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: 9pt;"&gt;Amounts reclassified from accumulated other comprehensive loss&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: 9pt;"&gt;Net current-period other comprehensive income (loss)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;2,030&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;364&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(4,812&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(2,616&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;)&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-indent: 9pt;"&gt;&lt;i&gt;Net unrealized gains (losses) on investments in securities&lt;/i&gt;&lt;/p&gt; &lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;i&gt;&#160;&lt;/i&gt;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;"&gt;Other comprehensive income (loss) before reclassifications&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;(49&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;117&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: 9pt;"&gt;Amounts reclassified from accumulated other comprehensive loss&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: 9pt;"&gt;Net current-period other comprehensive income (loss)&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;(49&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;117&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;-&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;
      &lt;/tr&gt;

      &lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;
       &lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;Balance at end of period&lt;/p&gt; &lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(8,115&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(9,634&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(8,115&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;)&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;
       &lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;(9,634&lt;/td&gt;
       &lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;)&lt;/td&gt;
      &lt;/tr&gt;

     &lt;/tbody&gt;
    &lt;/table&gt;
   </us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75344169"
      unitRef="USD">-10096000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-03-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75344171"
      unitRef="USD">-9998000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-4"
      id="c75344173"
      unitRef="USD">-3420000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2019-12-31_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75344175"
      unitRef="USD">-7018000</us-gaap:StockholdersEquity>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-4"
      id="c75344178"
      unitRef="USD">2030000</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c75344179"
      unitRef="USD">364000</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c75344180"
      unitRef="USD">-4812000</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c75344181"
      unitRef="USD">-2616000</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c75344182"
      unitRef="USD">-0</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c75344183"
      unitRef="USD">-0</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c75344184"
      unitRef="USD">-0</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c75344185"
      unitRef="USD">-0</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-4"
      id="c75344186"
      unitRef="USD">2030000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c75344187"
      unitRef="USD">364000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c75344188"
      unitRef="USD">-4812000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember"
      decimals="-3"
      id="c75344189"
      unitRef="USD">-2616000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"
      decimals="-3"
      id="c75344192"
      unitRef="USD">-49000</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"
      decimals="-3"
      id="c75344194"
      unitRef="USD">0</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"
      decimals="-3"
      id="c75344196"
      unitRef="USD">117000</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent
      contextRef="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"
      decimals="-3"
      id="c75344198"
      unitRef="USD">0</us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"
      decimals="-3"
      id="c75344199"
      unitRef="USD">-0</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"
      decimals="-3"
      id="c75344200"
      unitRef="USD">-0</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"
      decimals="-3"
      id="c75344201"
      unitRef="USD">-0</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent
      contextRef="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"
      decimals="-3"
      id="c75344202"
      unitRef="USD">-0</us-gaap:ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"
      decimals="-3"
      id="c75344203"
      unitRef="USD">-49000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2020-04-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"
      decimals="-3"
      id="c75344204"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2021-01-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"
      decimals="-3"
      id="c75344205"
      unitRef="USD">117000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="d_2020-01-01_2020-06-30_StatementEquityComponentsAxis-AccumulatedNetUnrealizedInvestmentGainLossMember"
      decimals="-3"
      id="c75344206"
      unitRef="USD">0</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75344207"
      unitRef="USD">-8115000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75344208"
      unitRef="USD">-9634000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2021-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75344209"
      unitRef="USD">-8115000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i_2020-06-30_StatementEquityComponentsAxis-AccumulatedOtherComprehensiveIncomeMember"
      decimals="-3"
      id="c75344210"
      unitRef="USD">-9634000</us-gaap:StockholdersEquity>
    <us-gaap:IncomeTaxDisclosureTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904988">
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;11&lt;/em&gt; &#x2013; Income Taxes&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The Company is subject to income tax in multiple jurisdictions and the use of estimates is required to determine the provision for income taxes. For the &lt;em style="font: inherit;"&gt;three&lt;/em&gt; months ended&#160;&lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; and &lt;em style="font: inherit;"&gt;2020&lt;/em&gt;, the Company recorded an income tax provision of $3.3 million and $2.5&#160;million, respectively.&#160;The income tax provision is based on the estimated annual effective tax rate for the year applied to pre-tax income. The results for the &lt;em style="font: inherit;"&gt;three&lt;/em&gt; and &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021 &lt;/em&gt;reflect losses in jurisdictions that are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; eligible for tax benefits on account of valuation allowances. The effective income tax rate for the &lt;em style="font: inherit;"&gt;three&lt;/em&gt; months ended&#160;&lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; was 20.5 percent compared to 16.6&#160;percent in the same period of the prior year. The effective tax rate increased by 3.9 percent&#160;for the &lt;em style="font: inherit;"&gt;three&lt;/em&gt; months ended&#160;&lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; when compared to the same period in&#160;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;, primarily due to a decrease in tax benefits from the vesting of restricted stock and the exercise of stock options. The effective income tax rate for the &lt;em style="font: inherit;"&gt;six&lt;/em&gt;&#160;months ended&#160;&lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; was 17.6 percent compared to 19.4&#160;percent in the same period of the prior year. The effective tax rate decreased by 1.8 percent&#160;for the &lt;em style="font: inherit;"&gt;six&lt;/em&gt;&#160;months ended&#160;&lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; when compared to the same period in&#160;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;, primarily due to an increase in tax benefits from the vesting of restricted stock and the exercise of stock options.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The effective income tax rate for the&#160;&lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; differs from the U.S. federal statutory rate of 21.0 percent due to various factors, including operating in multiple state and foreign jurisdictions and tax credits for which the Company qualifies.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The Company had unrecognized tax benefits totaling $5.0 million as of &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; and $4.8&#160;million as of&#160;&lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;, respectively, all of which, if recognized, would affect the Company&#x2019;s effective tax rate. The Company recognizes interest and penalties related to income tax matters in income tax expense, and reports the liability in current or long-term income taxes payable as appropriate.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;"&gt;On &lt;em style="font: inherit;"&gt; March 11, 2021, &lt;/em&gt;the President signed into law the ARP Act, a legislative package which is generally &lt;em style="font: inherit;"&gt;not&lt;/em&gt; significant to the Company's current tax footprint; however, the Company will continue to assess the ARP Act on an ongoing basis. Similar tax provisions and other stimulus measures have been granted either before or after &lt;em style="font: inherit;"&gt; June 30, 2021 &lt;/em&gt;by certain foreign and U.S. state jurisdictions, which the Company continues to evaluate and apply, if applicable.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
  </us-gaap:IncomeTaxDisclosureTextBlock>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-5"
      id="c75344214"
      unitRef="USD">3300000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-5"
      id="c75344215"
      unitRef="USD">2500000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2021-04-01_2021-06-30"
      decimals="3"
      id="c75344220"
      unitRef="Pure">0.205</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2020-04-01_2020-06-30"
      decimals="3"
      id="c75344221"
      unitRef="Pure">0.166</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <prlb:EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod
      contextRef="d_2021-04-01_2021-06-30"
      decimals="3"
      id="c75344222"
      unitRef="Pure">0.039</prlb:EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2021-01-01_2021-06-30"
      decimals="3"
      id="c75344226"
      unitRef="Pure">0.176</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="d_2020-01-01_2020-06-30"
      decimals="3"
      id="c75344227"
      unitRef="Pure">0.194</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <prlb:EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod
      contextRef="d_2021-01-01_2021-06-30"
      decimals="3"
      id="c75344228"
      unitRef="Pure">-0.018</prlb:EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="d_2021-01-01_2021-06-30"
      decimals="2"
      id="c75344232"
      unitRef="Pure">0.210</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2021-06-30"
      decimals="-6"
      id="c75344233"
      unitRef="USD">5000000.0</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i_2020-12-31"
      decimals="-5"
      id="c75344234"
      unitRef="USD">4800000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:SegmentReportingDisclosureTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904989">
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;Note &lt;em style="font: inherit;"&gt;12&lt;/em&gt; &#x2013; Segment Reporting&lt;/b&gt;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;The Company&#x2019;s reportable segments are based on the internal reporting used by the Company&#x2019;s Chief Executive Officer, who is the chief operating decision maker (CODM), to assess operating performance and make decisions about the allocation of resources. The Corporate Unallocated and Japan category includes non-reportable segments, as well as research and development and general and administrative costs that the Company does &lt;em style="font: inherit;"&gt;not&lt;/em&gt; allocate directly to its operating segments.&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Intercompany transactions primarily relate to intercontinental activity and have been eliminated and are excluded from the reported amounts. The difference between income from operations and pre-tax income relates to foreign currency-related gains and losses and interest income on cash balances and investments, which are &lt;em style="font: inherit;"&gt;not&lt;/em&gt; allocated to business segments.&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Revenue and income from operations by reportable segment&#160;for the&#160;&lt;em style="font: inherit;"&gt;three&lt;/em&gt; and &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; and&#160;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt; were&#160;as follows:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Revenue:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;United States&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;95,344&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;86,823&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;186,397&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;176,899&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Europe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;24,655&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;16,729&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;46,104&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;37,516&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Japan&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;3,049&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;3,023&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;6,673&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;7,268&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;"&gt;Total revenue&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;123,048&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;106,575&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;239,174&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;221,683&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 48%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Income from Operations:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;United States&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;26,280&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;24,349&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;48,783&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;49,438&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Europe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;5,063&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;2,261&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;3,692&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;6,625&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Corporate Unallocated and Japan&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;(15,239&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;(12,259&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;(32,110&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;(24,887&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;"&gt;Total Income from Operations&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;16,104&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;14,351&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;20,365&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;31,176&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Total long-lived assets&#160;at&#160;&lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; and &lt;em style="font: inherit;"&gt; December 31, 2020&lt;/em&gt;&#160;were as follows:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;June 30,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 62%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Total long-lived assets:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;United States&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;222,117&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;215,721&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Europe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;60,140&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;59,388&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Japan&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;6,238&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;7,557&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt;"&gt;Total Long-lived Assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;288,495&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;282,666&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="margin: 0px auto; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;Revenue by product line for the&#160;&lt;em style="font: inherit;"&gt;three&lt;/em&gt; and &lt;em style="font: inherit;"&gt;six&lt;/em&gt; months ended &lt;em style="font: inherit;"&gt; June 30, 2021&lt;/em&gt; and&#160;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt; were&#160;as follows:&lt;/p&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr class="hr-custom" style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/&gt;
   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;

    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Revenue:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Injection Molding&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;58,168&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;57,894&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;114,527&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;112,670&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;CNC Machining&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;41,592&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;28,760&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;78,295&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;66,645&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;3D Printing&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;18,170&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;14,236&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;35,405&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;30,184&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Sheet Metal&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;4,717&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;4,669&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;9,936&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;10,318&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Other Revenue&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;401&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;1,016&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;1,011&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;1,866&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;Total revenue&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;123,048&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;106,575&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;239,174&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;221,683&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

   &lt;p style="margin: 0pt; text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/p&gt;
   &lt;hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/&gt;
   &lt;p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;"&gt;&#160;&lt;/p&gt;
  </us-gaap:SegmentReportingDisclosureTextBlock>
    <us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock
      contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"
      id="c1904990">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Revenue:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;United States&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;95,344&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;86,823&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;186,397&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;176,899&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Europe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;24,655&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;16,729&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;46,104&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;37,516&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Japan&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;3,049&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;3,023&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;6,673&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;7,268&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;"&gt;Total revenue&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;123,048&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;106,575&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;239,174&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;221,683&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c75344264"
      unitRef="USD">95344000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c75344265"
      unitRef="USD">86823000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c75344266"
      unitRef="USD">186397000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c75344267"
      unitRef="USD">176899000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c75344268"
      unitRef="USD">24655000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c75344269"
      unitRef="USD">16729000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c75344270"
      unitRef="USD">46104000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c75344271"
      unitRef="USD">37516000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c75344272"
      unitRef="USD">3049000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c75344273"
      unitRef="USD">3023000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c75344274"
      unitRef="USD">6673000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c75344275"
      unitRef="USD">7268000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c75344276"
      unitRef="USD">123048000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c75344277"
      unitRef="USD">106575000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c75344278"
      unitRef="USD">239174000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c75344279"
      unitRef="USD">221683000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <prlb:IncomeFromOperationsByGeographicAreaTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904991">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 48%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Income from Operations:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;United States&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;26,280&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;24,349&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;48,783&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;49,438&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Europe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;5,063&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;2,261&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;3,692&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;6,625&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Corporate Unallocated and Japan&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;(15,239&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;(12,259&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;(32,110&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;)&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;(24,887&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;)&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;"&gt;Total Income from Operations&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;16,104&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;14,351&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;20,365&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 10%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;31,176&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </prlb:IncomeFromOperationsByGeographicAreaTableTextBlock>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-4"
      id="c75344289"
      unitRef="USD">26280000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c75344290"
      unitRef="USD">24349000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c75344291"
      unitRef="USD">48783000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c75344292"
      unitRef="USD">49438000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c75344293"
      unitRef="USD">5063000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c75344294"
      unitRef="USD">2261000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c75344295"
      unitRef="USD">3692000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c75344296"
      unitRef="USD">6625000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c75344297"
      unitRef="USD">-15239000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c75344298"
      unitRef="USD">-12259000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-4"
      id="c75344299"
      unitRef="USD">-32110000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c75344300"
      unitRef="USD">-24887000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c75344301"
      unitRef="USD">16104000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-04-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c75344302"
      unitRef="USD">14351000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2021-01-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c75344303"
      unitRef="USD">20365000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="d_2020-01-01_2020-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c75344304"
      unitRef="USD">31176000</us-gaap:OperatingIncomeLoss>
    <us-gaap:LongLivedAssetsByGeographicAreasTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904992">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;June 30,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;December 31,&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="width: 62%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt; &lt;p style="margin: 0pt; text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;b&gt;Total long-lived assets:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="text-align: left; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;United States&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;222,117&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;215,721&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Europe&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;60,140&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;59,388&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Japan&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;6,238&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;7,557&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt; &lt;p style="font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt;"&gt;Total Long-lived Assets&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;288,495&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;$&lt;/td&gt;&lt;td style="width: 16%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;282,666&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:LongLivedAssetsByGeographicAreasTableTextBlock>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c75344310"
      unitRef="USD">222117000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-UnitedStatesSegmentMember"
      decimals="-3"
      id="c75344311"
      unitRef="USD">215721000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-4"
      id="c75344312"
      unitRef="USD">60140000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-EuropeSegmentMember"
      decimals="-3"
      id="c75344313"
      unitRef="USD">59388000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c75344314"
      unitRef="USD">6238000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember_StatementBusinessSegmentsAxis-JapanSegmentMember"
      decimals="-3"
      id="c75344315"
      unitRef="USD">7557000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c75344316"
      unitRef="USD">288495000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i_2020-12-31_ConsolidationItemsAxis-OperatingSegmentsMember"
      decimals="-3"
      id="c75344317"
      unitRef="USD">282666000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:DisaggregationOfRevenueTableTextBlock contextRef="d_2021-01-01_2021-06-30" id="c1904993">
    &lt;table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &amp;quot;Times New Roman&amp;quot;; text-indent: 0px;"&gt;&lt;tbody&gt;&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Three Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="6" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;&lt;em style="font: inherit;"&gt;Six Months Ended June 30,&lt;/em&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;(in thousands)&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2021&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td colspan="2" style="text-align: center; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"&gt;&lt;b&gt;&lt;em style="font: inherit;"&gt;2020&lt;/em&gt;&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;&lt;b&gt;Revenue:&lt;/b&gt;&lt;/p&gt; &lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&lt;b&gt;&#160;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Injection Molding&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;58,168&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;57,894&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;114,527&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;112,670&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;CNC Machining&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;41,592&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;28,760&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;78,295&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;66,645&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;3D Printing&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;18,170&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;14,236&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;35,405&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;30,184&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Sheet Metal&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;4,717&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;4,669&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;9,936&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;10,318&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt; &lt;p style="margin-top: 0pt; margin-bottom: 0pt"&gt;Other Revenue&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;401&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;1,016&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;1,011&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0; margin: 0"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;1,866&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"&gt;&lt;td style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt;"&gt; &lt;p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"&gt;Total revenue&lt;/p&gt; &lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;123,048&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;106,575&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;239,174&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt;"&gt;&#160;&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;$&lt;/td&gt;&lt;td style="width: 9%; text-align: right; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);"&gt;221,683&lt;/td&gt;&lt;td style="width: 1%; font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;"&gt;&#160;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
   </us-gaap:DisaggregationOfRevenueTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-04-01_2021-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember"
      decimals="-3"
      id="c75344327"
      unitRef="USD">58168000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-04-01_2020-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember"
      decimals="-3"
      id="c75344328"
      unitRef="USD">57894000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember"
      decimals="-3"
      id="c75344329"
      unitRef="USD">114527000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember"
      decimals="-4"
      id="c75344330"
      unitRef="USD">112670000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-04-01_2021-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember"
      decimals="-3"
      id="c75344331"
      unitRef="USD">41592000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-04-01_2020-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember"
      decimals="-4"
      id="c75344332"
      unitRef="USD">28760000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember"
      decimals="-3"
      id="c75344333"
      unitRef="USD">78295000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-06-30_ProductOrServiceAxis-CNCMachiningFirstcutMember"
      decimals="-3"
      id="c75344334"
      unitRef="USD">66645000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-04-01_2021-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember"
      decimals="-4"
      id="c75344335"
      unitRef="USD">18170000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-04-01_2020-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember"
      decimals="-3"
      id="c75344336"
      unitRef="USD">14236000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember"
      decimals="-3"
      id="c75344337"
      unitRef="USD">35405000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-06-30_ProductOrServiceAxis-ThreeDPrintingFinelineMember"
      decimals="-3"
      id="c75344338"
      unitRef="USD">30184000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-04-01_2021-06-30_ProductOrServiceAxis-SheetMetalMember"
      decimals="-3"
      id="c75344339"
      unitRef="USD">4717000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-04-01_2020-06-30_ProductOrServiceAxis-SheetMetalMember"
      decimals="-3"
      id="c75344340"
      unitRef="USD">4669000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-06-30_ProductOrServiceAxis-SheetMetalMember"
      decimals="-3"
      id="c75344341"
      unitRef="USD">9936000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-06-30_ProductOrServiceAxis-SheetMetalMember"
      decimals="-3"
      id="c75344342"
      unitRef="USD">10318000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-04-01_2021-06-30_ProductOrServiceAxis-OtherProductsMember"
      decimals="-3"
      id="c75344343"
      unitRef="USD">401000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-04-01_2020-06-30_ProductOrServiceAxis-OtherProductsMember"
      decimals="-3"
      id="c75344344"
      unitRef="USD">1016000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-06-30_ProductOrServiceAxis-OtherProductsMember"
      decimals="-3"
      id="c75344345"
      unitRef="USD">1011000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-06-30_ProductOrServiceAxis-OtherProductsMember"
      decimals="-3"
      id="c75344346"
      unitRef="USD">1866000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-04-01_2021-06-30"
      decimals="-3"
      id="c75344347"
      unitRef="USD">123048000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-04-01_2020-06-30"
      decimals="-3"
      id="c75344348"
      unitRef="USD">106575000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2021-01-01_2021-06-30"
      decimals="-3"
      id="c75344349"
      unitRef="USD">239174000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax
      contextRef="d_2020-01-01_2020-06-30"
      decimals="-3"
      id="c75344350"
      unitRef="USD">221683000</us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax>
</xbrl>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>11
<FILENAME>R1.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485948451912">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Document And Entity Information - shares<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jul. 29, 2021</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentInformationLineItems', window );"><strong>Document Information [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_dei_EntityCentralIndexKey', window );">Entity Central Index Key</a></td>
<td class="text">0001443669<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityRegistrantName', window );">Entity Registrant Name</a></td>
<td class="text">Proto Labs Inc<span></span>
</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="top.Show.showAR( this, 'defref_dei_AmendmentFlag', window );">Amendment Flag</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_CurrentFiscalYearEndDate', window );">Current Fiscal Year End Date</a></td>
<td class="text">--12-31<span></span>
</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="top.Show.showAR( this, 'defref_dei_DocumentFiscalPeriodFocus', window );">Document Fiscal Period Focus</a></td>
<td class="text">Q2<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentFiscalYearFocus', window );">Document Fiscal Year Focus</a></td>
<td class="text">2021<span></span>
</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="top.Show.showAR( this, 'defref_dei_DocumentType', window );">Document Type</a></td>
<td class="text">10-Q<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentQuarterlyReport', window );">Document Quarterly Report</a></td>
<td class="text">true<span></span>
</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="top.Show.showAR( this, 'defref_dei_DocumentPeriodEndDate', window );">Document Period End Date</a></td>
<td class="text">Jun. 30,  2021<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentTransitionReport', window );">Document Transition Report</a></td>
<td class="text">false<span></span>
</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="top.Show.showAR( this, 'defref_dei_EntityFileNumber', window );">Entity File Number</a></td>
<td class="text">001-35435<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityIncorporationStateCountryCode', window );">Entity Incorporation, State or Country Code</a></td>
<td class="text">MN<span></span>
</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="top.Show.showAR( this, 'defref_dei_EntityTaxIdentificationNumber', window );">Entity Tax Identification Number</a></td>
<td class="text">41-1939628<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityAddressAddressLine1', window );">Entity Address, Address Line One</a></td>
<td class="text">5540 Pioneer Creek Drive<span></span>
</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="top.Show.showAR( this, 'defref_dei_EntityAddressCityOrTown', window );">Entity Address, City or Town</a></td>
<td class="text">Maple Plain<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityAddressStateOrProvince', window );">Entity Address, State or Province</a></td>
<td class="text">MN<span></span>
</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="top.Show.showAR( this, 'defref_dei_EntityAddressPostalZipCode', window );">Entity Address, Postal Zip Code</a></td>
<td class="text">55359<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_CityAreaCode', window );">City Area Code</a></td>
<td class="text">763<span></span>
</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="top.Show.showAR( this, 'defref_dei_LocalPhoneNumber', window );">Local Phone Number</a></td>
<td class="text">479-3680<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_Security12bTitle', window );">Title of 12(b) Security</a></td>
<td class="text">Common Stock, Par Value $0.001 Per Share<span></span>
</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="top.Show.showAR( this, 'defref_dei_TradingSymbol', window );">Trading Symbol</a></td>
<td class="text">PRLB<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_SecurityExchangeName', window );">Security Exchange Name</a></td>
<td class="text">NYSE<span></span>
</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="top.Show.showAR( this, 'defref_dei_EntityCurrentReportingStatus', window );">Entity Current Reporting Status</a></td>
<td class="text">Yes<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityInteractiveDataCurrent', window );">Entity Interactive Data Current</a></td>
<td class="text">Yes<span></span>
</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="top.Show.showAR( this, 'defref_dei_EntityFilerCategory', window );">Entity Filer Category</a></td>
<td class="text">Large Accelerated Filer<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntitySmallBusiness', window );">Entity Small Business</a></td>
<td class="text">false<span></span>
</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="top.Show.showAR( this, 'defref_dei_EntityEmergingGrowthCompany', window );">Entity Emerging Growth Company</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityShellCompany', window );">Entity Shell Company</a></td>
<td class="text">false<span></span>
</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="top.Show.showAR( this, 'defref_dei_EntityCommonStockSharesOutstanding', window );">Entity Common Stock, Shares Outstanding</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">27,761,063<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="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.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="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Area code of city</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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_CurrentFiscalYearEndDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>End date of current fiscal year in the format --MM-DD.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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_CurrentFiscalYearEndDate</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:gMonthDayItemType</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_DocumentFiscalPeriodFocus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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_DocumentFiscalPeriodFocus</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:fiscalPeriodItemType</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_DocumentFiscalYearFocus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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_DocumentFiscalYearFocus</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:gYearItemType</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_DocumentInformationLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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_DocumentInformationLineItems</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="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.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="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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_DocumentQuarterlyReport">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true only for a form used as an quarterly report.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-Q<br> -Number 240<br> -Section 308<br> -Subsection a<br></p></div>
<a href="javascript:void(0);" onclick="top.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_DocumentQuarterlyReport</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_DocumentTransitionReport">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true only for a form used as a transition report.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Forms 10-K, 10-Q, 20-F<br> -Number 240<br> -Section 13<br> -Subsection a-1<br></p></div>
<a href="javascript:void(0);" onclick="top.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_DocumentTransitionReport</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_DocumentType">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.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="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.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="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Name of the City or Town</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Code for the postal or zip code</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Name of the state or province.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.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="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation 12B<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.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_EntityCommonStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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_EntityCommonStockSharesOutstanding</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:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCurrentReportingStatus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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_EntityCurrentReportingStatus</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:yesNoItemType</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="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Indicate if registrant meets the emerging growth company criteria.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation 12B<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.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="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.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="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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_EntityFilerCategory">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation 12B<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.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_EntityFilerCategory</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:filerCategoryItemType</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="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.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="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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_EntityInteractiveDataCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-T<br> -Number 232<br> -Section 405<br></p></div>
<a href="javascript:void(0);" onclick="top.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_EntityInteractiveDataCurrent</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:yesNoItemType</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="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.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="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation 12B<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.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_EntityShellCompany">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation 12B<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.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_EntityShellCompany</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_EntitySmallBusiness">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Indicates that the company is a Smaller Reporting Company (SRC).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation 12B<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.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_EntitySmallBusiness</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_EntityTaxIdentificationNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.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="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation 12B<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.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="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Local phone number for entity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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_Security12bTitle">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Title of a 12(b) registered security.</p></div>
<a href="javascript:void(0);" onclick="top.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="top.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="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.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="top.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="top.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_TradingSymbol">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.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="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>12
<FILENAME>R2.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485868633224">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Balance Sheets (Current Period Unaudited) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsCurrentAbstract', window );"><strong>Current assets</strong></a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAtCarryingValue', window );">Cash and cash equivalents</a></td>
<td class="nump">$ 41,909<span></span>
</td>
<td class="nump">$ 127,603<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MarketableSecuritiesCurrent', window );">Short-term marketable securities</a></td>
<td class="nump">18,341<span></span>
</td>
<td class="nump">34,088<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccountsReceivableNetCurrent', window );">Accounts receivable, net of allowance for doubtful accounts of $1,997 and $1,781 as of June 30, 2021 and December 31, 2020, respectively</a></td>
<td class="nump">83,470<span></span>
</td>
<td class="nump">57,877<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryNet', window );">Inventory</a></td>
<td class="nump">9,111<span></span>
</td>
<td class="nump">10,862<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxesReceivable', window );">Income taxes receivable</a></td>
<td class="nump">4,575<span></span>
</td>
<td class="nump">540<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PrepaidExpenseAndOtherAssetsCurrent', window );">Prepaid expenses and other current assets</a></td>
<td class="nump">10,107<span></span>
</td>
<td class="nump">11,032<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsCurrent', window );">Total current assets</a></td>
<td class="nump">167,513<span></span>
</td>
<td class="nump">242,002<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Property and equipment, net</a></td>
<td class="nump">288,495<span></span>
</td>
<td class="nump">282,666<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="nump">407,191<span></span>
</td>
<td class="nump">128,752<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherIntangibleAssetsNet', window );">Other intangible assets, net</a></td>
<td class="nump">41,674<span></span>
</td>
<td class="nump">14,350<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MarketableSecuritiesNoncurrent', window );">Long-term marketable securities</a></td>
<td class="nump">28,700<span></span>
</td>
<td class="nump">59,357<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseRightOfUseAsset', window );">Operating lease assets</a></td>
<td class="nump">8,801<span></span>
</td>
<td class="nump">9,855<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinanceLeaseRightOfUseAsset', window );">Finance lease assets</a></td>
<td class="nump">2,147<span></span>
</td>
<td class="nump">2,396<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherAssetsNoncurrent', window );">Other long-term assets</a></td>
<td class="nump">4,769<span></span>
</td>
<td class="nump">4,826<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Assets', window );">Total assets</a></td>
<td class="nump">949,290<span></span>
</td>
<td class="nump">744,204<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesCurrentAbstract', window );"><strong>Current liabilities</strong></a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_AccountsPayableCurrent', window );">Accounts payable</a></td>
<td class="nump">26,038<span></span>
</td>
<td class="nump">18,248<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeRelatedLiabilitiesCurrent', window );">Accrued compensation</a></td>
<td class="nump">14,930<span></span>
</td>
<td class="nump">11,989<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccruedLiabilitiesAndOtherLiabilities', window );">Accrued liabilities and other</a></td>
<td class="nump">15,072<span></span>
</td>
<td class="nump">16,193<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent', window );">Current contingent consideration</a></td>
<td class="nump">2,936<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityCurrent', window );">Current operating lease liabilities</a></td>
<td class="nump">2,847<span></span>
</td>
<td class="nump">3,272<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiabilityCurrent', window );">Current finance lease liabilities</a></td>
<td class="nump">554<span></span>
</td>
<td class="nump">552<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccruedIncomeTaxesCurrent', window );">Income taxes payable</a></td>
<td class="nump">40<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesCurrent', window );">Total current liabilities</a></td>
<td class="nump">62,417<span></span>
</td>
<td class="nump">50,254<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent', window );">Long-term contingent consideration</a></td>
<td class="nump">2,693<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityNoncurrent', window );">Long-term operating lease liabilities</a></td>
<td class="nump">7,097<span></span>
</td>
<td class="nump">7,586<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinanceLeaseLiabilityNoncurrent', window );">Long-term finance lease liabilities</a></td>
<td class="nump">1,639<span></span>
</td>
<td class="nump">1,919<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxLiabilitiesNet', window );">Long-term deferred tax liabilities</a></td>
<td class="nump">36,898<span></span>
</td>
<td class="nump">33,854<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherLiabilitiesNoncurrent', window );">Other long-term liabilities</a></td>
<td class="nump">6,569<span></span>
</td>
<td class="nump">6,235<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Liabilities', window );">Total liabilities</a></td>
<td class="nump">117,313<span></span>
</td>
<td class="nump">99,848<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquityAbstract', window );"><strong>Shareholders' equity</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockValue', window );">Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of each of June 30, 2021 and December 31, 2020</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockValue', window );">Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 27,761,063 and 26,776,796 shares as of June 30, 2021 and December 31, 2020, respectively</a></td>
<td class="nump">28<span></span>
</td>
<td class="nump">27<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdditionalPaidInCapitalCommonStock', window );">Additional paid-in capital</a></td>
<td class="nump">461,597<span></span>
</td>
<td class="nump">284,848<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RetainedEarningsAccumulatedDeficit', window );">Retained earnings</a></td>
<td class="nump">378,467<span></span>
</td>
<td class="nump">362,901<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax', window );">Accumulated other comprehensive loss</a></td>
<td class="num">(8,115)<span></span>
</td>
<td class="num">(3,420)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Total shareholders' equity</a></td>
<td class="nump">831,977<span></span>
</td>
<td class="nump">644,356<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesAndStockholdersEquity', window );">Total liabilities and shareholders' equity</a></td>
<td class="nump">$ 949,290<span></span>
</td>
<td class="nump">$ 744,204<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsPayableCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.19(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AccountsPayableCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsReceivableNetCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=124259787&amp;loc=d3e4428-111522<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(3))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 45<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124259787&amp;loc=d3e4531-111522<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AccountsReceivableNetCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedIncomeTaxesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying amount as of the balance sheet date of the unpaid sum of the known and estimated amounts payable to satisfy all currently due domestic and foreign income tax obligations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(15)(b)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(15)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AccruedIncomeTaxesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedLiabilitiesAndOtherLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expenses incurred but not yet paid nor invoiced, and liabilities classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AccruedLiabilitiesAndOtherLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Accumulated change in equity from transactions and other events and circumstances from non-owner sources, net of tax effect, at period end. Excludes Net Income (Loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners. Includes foreign currency translation items, certain pension adjustments, unrealized gains and losses on certain investments in debt and equity securities, other than temporary impairment (OTTI) losses related to factors other than credit losses on available-for-sale and held-to-maturity debt securities that an entity does not intend to sell and it is not more likely than not that the entity will be required to sell before recovery of the amortized cost basis, as well as changes in the fair value of derivatives related to the effective portion of a designated cash flow hedge.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(4))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e637-108580<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(23)(a)(3))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669686-108580<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e681-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdditionalPaidInCapitalCommonStock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Value received from shareholders in common stock-related transactions that are in excess of par value or stated value and amounts received from other stock-related transactions. Includes only common stock transactions (excludes preferred stock transactions). May be called contributed capital, capital in excess of par, capital surplus, or paid-in capital.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AdditionalPaidInCapitalCommonStock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Assets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Sum of the carrying amounts as of the balance sheet date of all assets that are recognized. Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(11))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(12))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 9: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 14: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -URI http://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=116870748&amp;loc=SL6758485-165988<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_Assets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Sum of the carrying amounts as of the balance sheet date of all assets that are expected to be realized in cash, sold, or consumed within one year (or the normal operating cycle, if longer). Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6801-107765<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.9)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=116870748&amp;loc=SL6758485-165988<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 15: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -URI http://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 20: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AssetsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsCurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AssetsCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liability recognized arising from contingent consideration in a business combination, expected to be settled within one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 25<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=6911189&amp;loc=d3e6408-128476<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 35<br> -Paragraph 1<br> -Subparagraph b<br> -URI http://asc.fasb.org/extlink&amp;oid=116859824&amp;loc=d3e6819-128478<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liability recognized arising from contingent consideration in a business combination, expected to be settled beyond one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 25<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=6911189&amp;loc=d3e6408-128476<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 35<br> -Paragraph 1<br> -Subparagraph b<br> -URI http://asc.fasb.org/extlink&amp;oid=116859824&amp;loc=d3e6819-128478<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAtCarryingValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3044-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_CashAndCashEquivalentsAtCarryingValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_CommonStockValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxLiabilitiesNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=d3e31931-109318<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=d3e31917-109318<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DeferredIncomeTaxLiabilitiesNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeRelatedLiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total of the carrying values as of the balance sheet date of obligations incurred through that date and payable for obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_EmployeeRelatedLiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from finance lease, classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FinanceLeaseLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from finance lease, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FinanceLeaseLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinanceLeaseRightOfUseAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, after accumulated amortization, of right-of-use asset from finance lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FinanceLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(10)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=120320667&amp;loc=SL49117168-202975<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=99380562&amp;loc=d3e13770-109266<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxesReceivable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying amount due within one year of the balance sheet date (or one operating cycle, if longer) from tax authorities as of the balance sheet date representing refunds of overpayments or recoveries based on agreed-upon resolutions of disputes.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03.5(c))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03.10)<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.3(a)(4))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_IncomeTaxesReceivable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_InventoryNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Liabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Sum of the carrying amounts as of the balance sheet date of all liabilities that are recognized. Liabilities are probable future sacrifices of economic benefits arising from present obligations of an entity to transfer assets or provide services to other entities in the future.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.19-26)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=116870748&amp;loc=SL6758485-165988<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -URI http://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_Liabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesAndStockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(25))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(32))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_LiabilitiesAndStockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=116870748&amp;loc=SL6758485-165988<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -URI http://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 20: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.21)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_LiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesCurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_LiabilitiesCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_MarketableSecuritiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in marketable security, classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_MarketableSecuritiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_MarketableSecuritiesNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in marketable security, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.12)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_MarketableSecuritiesNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OperatingLeaseLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OperatingLeaseLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseRightOfUseAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's right to use underlying asset under operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OperatingLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherAssetsNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of noncurrent assets classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.17)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OtherAssetsNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherIntangibleAssetsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated amortization of finite-lived and indefinite-lived intangible assets classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OtherIntangibleAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherLiabilitiesNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.24)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OtherLiabilitiesNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Aggregate par or stated value of issued nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable preferred shares, par value and other disclosure concepts are in another section within stockholders' equity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PreferredStockValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PrepaidExpenseAndOtherAssetsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(7))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PrepaidExpenseAndOtherAssetsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(14))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 360<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124429447&amp;loc=SL124453093-239630<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(13))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetainedEarningsAccumulatedDeficit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cumulative amount of the reporting entity's undistributed earnings or deficit.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(3))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 65<br> -Paragraph 15<br> -Subparagraph (g)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121322162&amp;loc=SL121327923-165333<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(23)(a)(4))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_RetainedEarningsAccumulatedDeficit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -URI http://asc.fasb.org/extlink&amp;oid=122038336&amp;loc=d3e74512-122707<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquityAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_StockholdersEquityAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>13
<FILENAME>R3.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485867060520">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals) - USD ($)<br></strong></div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent', window );">Allowance for doubtful accounts</a></td>
<td class="nump">$ 1,997<span></span>
</td>
<td class="nump">$ 1,781<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockParOrStatedValuePerShare', window );">Preferred stock, par value (in dollars per share)</a></td>
<td class="nump">$ 0.001<span></span>
</td>
<td class="nump">$ 0.001<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockSharesAuthorized', window );">Preferred stock, shares authorized (in shares)</a></td>
<td class="nump">10,000,000<span></span>
</td>
<td class="nump">10,000,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockSharesIssued', window );">Preferred stock, shares issued (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockParOrStatedValuePerShare', window );">Common stock, par value (in dollars per share)</a></td>
<td class="nump">$ 0.001<span></span>
</td>
<td class="nump">$ 0.001<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesAuthorized', window );">Common stock, shares authorized (in shares)</a></td>
<td class="nump">150,000,000<span></span>
</td>
<td class="nump">150,000,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesIssued', window );">Common stock, shares issued (in shares)</a></td>
<td class="nump">27,761,063<span></span>
</td>
<td class="nump">26,776,796<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Common stock, shares outstanding (in shares)</a></td>
<td class="nump">27,761,063<span></span>
</td>
<td class="nump">26,776,796<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of allowance for credit loss on accounts receivable, classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=123577603&amp;loc=d3e5074-111524<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124255206&amp;loc=SL82895884-210446<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockParOrStatedValuePerShare">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Face amount or stated value per share of common stock.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_CommonStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesAuthorized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The maximum number of common shares permitted to be issued by an entity's charter and bylaws.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_CommonStockSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_CommonStockSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_CommonStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockParOrStatedValuePerShare">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496158-112644<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PreferredStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesAuthorized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The maximum number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) permitted to be issued by an entity's charter and bylaws.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PreferredStockSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) issued to shareholders (includes related preferred shares that were issued, repurchased, and remain in the treasury). May be all or portion of the number of preferred shares authorized. Excludes preferred shares that are classified as debt.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496158-112644<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PreferredStockSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>14
<FILENAME>R4.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485950474536">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Comprehensive Income (Unaudited) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenuesAbstract', window );"><strong>Statements of Operations:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 123,048<span></span>
</td>
<td class="nump">$ 106,575<span></span>
</td>
<td class="nump">$ 239,174<span></span>
</td>
<td class="nump">$ 221,683<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CostOfGoodsAndServicesSold', window );">Cost of revenue</a></td>
<td class="nump">66,423<span></span>
</td>
<td class="nump">54,119<span></span>
</td>
<td class="nump">127,219<span></span>
</td>
<td class="nump">111,127<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GrossProfit', window );">Gross profit</a></td>
<td class="nump">56,625<span></span>
</td>
<td class="nump">52,456<span></span>
</td>
<td class="nump">111,955<span></span>
</td>
<td class="nump">110,556<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingExpensesAbstract', window );"><strong>Operating expenses</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_SellingAndMarketingExpense', window );">Marketing and sales</a></td>
<td class="nump">21,044<span></span>
</td>
<td class="nump">16,936<span></span>
</td>
<td class="nump">40,524<span></span>
</td>
<td class="nump">35,116<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ResearchAndDevelopmentExpense', window );">Research and development</a></td>
<td class="nump">11,060<span></span>
</td>
<td class="nump">8,648<span></span>
</td>
<td class="nump">23,241<span></span>
</td>
<td class="nump">17,635<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GeneralAndAdministrativeExpense', window );">General and administrative</a></td>
<td class="nump">8,417<span></span>
</td>
<td class="nump">12,521<span></span>
</td>
<td class="nump">27,825<span></span>
</td>
<td class="nump">26,629<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingExpenses', window );">Total operating expenses</a></td>
<td class="nump">40,521<span></span>
</td>
<td class="nump">38,105<span></span>
</td>
<td class="nump">91,590<span></span>
</td>
<td class="nump">79,380<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Income from operations</a></td>
<td class="nump">16,104<span></span>
</td>
<td class="nump">14,351<span></span>
</td>
<td class="nump">20,365<span></span>
</td>
<td class="nump">31,176<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherNonoperatingIncomeExpense', window );">Other income (loss), net</a></td>
<td class="nump">137<span></span>
</td>
<td class="nump">767<span></span>
</td>
<td class="num">(176)<span></span>
</td>
<td class="nump">1,821<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest', window );">Income before income taxes</a></td>
<td class="nump">16,241<span></span>
</td>
<td class="nump">15,118<span></span>
</td>
<td class="nump">20,189<span></span>
</td>
<td class="nump">32,997<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Provision for income taxes</a></td>
<td class="nump">3,326<span></span>
</td>
<td class="nump">2,511<span></span>
</td>
<td class="nump">3,562<span></span>
</td>
<td class="nump">6,406<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 12,915<span></span>
</td>
<td class="nump">$ 12,607<span></span>
</td>
<td class="nump">$ 16,627<span></span>
</td>
<td class="nump">$ 26,591<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareAbstract', window );"><strong>Net income per share:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareBasic', window );">Basic (in dollars per share)</a></td>
<td class="nump">$ 0.47<span></span>
</td>
<td class="nump">$ 0.47<span></span>
</td>
<td class="nump">$ 0.60<span></span>
</td>
<td class="nump">$ 1.00<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareDiluted', window );">Diluted (in dollars per share)</a></td>
<td class="nump">$ 0.47<span></span>
</td>
<td class="nump">$ 0.47<span></span>
</td>
<td class="nump">$ 0.60<span></span>
</td>
<td class="nump">$ 0.99<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract', window );"><strong>Shares used to compute net income per share:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic', window );">Basic (in shares)</a></td>
<td class="nump">27,735,732<span></span>
</td>
<td class="nump">26,660,498<span></span>
</td>
<td class="nump">27,600,684<span></span>
</td>
<td class="nump">26,718,652<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding', window );">Diluted (in shares)</a></td>
<td class="nump">27,744,870<span></span>
</td>
<td class="nump">26,760,866<span></span>
</td>
<td class="nump">27,741,464<span></span>
</td>
<td class="nump">26,837,938<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTaxAbstract', window );"><strong>Comprehensive Income (net of tax)</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Comprehensive income</a></td>
<td class="nump">$ 14,896<span></span>
</td>
<td class="nump">$ 12,971<span></span>
</td>
<td class="nump">$ 11,932<span></span>
</td>
<td class="nump">$ 23,975<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ComprehensiveIncomeNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(24))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e557-108580<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(26))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669625-108580<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669619-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ComprehensiveIncomeNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_ComprehensiveIncomeNetOfTaxAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ComprehensiveIncomeNetOfTaxAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_CostOfGoodsAndServicesSold">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate costs related to goods produced and sold and services rendered by an entity during the reporting period. This excludes costs incurred during the reporting period related to financial services rendered and other revenue generating activities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 924<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -URI http://asc.fasb.org/extlink&amp;oid=6472922&amp;loc=d3e499488-122856<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.2(a),(d))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_CostOfGoodsAndServicesSold</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_EarningsPerShareAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_EarningsPerShareAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_EarningsPerShareBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1448-109256<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1337-109256<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 9: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e4984-109258<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e3842-109258<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22644-107794<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1252-109256<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_EarningsPerShareBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_EarningsPerShareDiluted">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e4984-109258<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22644-107794<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e3842-109258<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1252-109256<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1337-109256<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_EarningsPerShareDiluted</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_GeneralAndAdministrativeExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate total of expenses of managing and administering the affairs of an entity, including affiliates of the reporting entity, which are not directly or indirectly associated with the manufacture, sale or creation of a product or product line.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_GeneralAndAdministrativeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_GrossProfit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 9: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 18: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.1,2)<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_GrossProfit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 940<br> -SubTopic 20<br> -Section 25<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123384075&amp;loc=d3e41242-110953<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(10))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 235<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-05(b)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399901&amp;loc=d3e537907-122884<br><br>Reference 9: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 10: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(15))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_IncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32672-109319<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 20<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123586238&amp;loc=d3e38679-109324<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(9))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL124452729-227067<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669619-108580<br><br>Reference 25: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -SubTopic 20<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=109222650&amp;loc=SL51721683-107760<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669625-108580<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OperatingExpenses">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Generally recurring costs associated with normal operations except for the portion of these expenses which can be clearly related to production and included in cost of sales or services. Includes selling, general and administrative expense.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OperatingExpenses</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_OperatingExpensesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OperatingExpensesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_OperatingIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The net result for the period of deducting operating expenses from operating revenues.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OperatingIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OtherNonoperatingIncomeExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of income (expense) related to nonoperating activities, classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.9)<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OtherNonoperatingIncomeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_ResearchAndDevelopmentExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate costs incurred (1) in a planned search or critical investigation aimed at discovery of new knowledge with the hope that such knowledge will be useful in developing a new product or service, a new process or technique, or in bringing about a significant improvement to an existing product or process; or (2) to translate research findings or other knowledge into a plan or design for a new product or process or for a significant improvement to an existing product or process whether intended for sale or the entity's use, during the reporting period charged to research and development projects, including the costs of developing computer software up to the point in time of achieving technological feasibility, and costs allocated in accounting for a business combination to in-process projects deemed to have no alternative future use.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 912<br> -SubTopic 730<br> -Section 25<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6472174&amp;loc=d3e58812-109433<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 985<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6501960&amp;loc=d3e128462-111756<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 730<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6420194&amp;loc=d3e21568-108373<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ResearchAndDevelopmentExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9038-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130545-203045<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130543-203045<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 42<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9054-108599<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 40<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9031-108599<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 924<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -URI http://asc.fasb.org/extlink&amp;oid=6472922&amp;loc=d3e499488-122856<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_RevenuesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_RevenuesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_SellingAndMarketingExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate total amount of expenses directly related to the marketing or selling of products or services.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_SellingAndMarketingExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 16<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1505-109256<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1448-109256<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_WeightedAverageNumberOfSharesOutstandingBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>15
<FILENAME>R5.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485859807256">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Consolidated Statements of Shareholders' Equity (Unaudited) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Common Stock [Member]</div></th>
<th class="th"><div>Additional Paid-in Capital [Member]</div></th>
<th class="th"><div>Retained Earnings [Member]</div></th>
<th class="th"><div>AOCI Attributable to Parent [Member]</div></th>
<th class="th"><div>Total</div></th>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Dec. 31, 2019</a></td>
<td class="nump">26,786,459<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2019</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">$ 268,059<span></span>
</td>
<td class="nump">$ 324,722<span></span>
</td>
<td class="num">$ (7,018)<span></span>
</td>
<td class="nump">$ 585,790<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)</a></td>
<td class="nump">23,525<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(902)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(902)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">3,033<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,033<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchases of common stock (in shares)</a></td>
<td class="num">(161,460)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchases of common stock</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(1,616)<span></span>
</td>
<td class="num">(9,569)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(11,185)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">13,984<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">13,984<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract', window );"><strong>Other comprehensive loss</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustment</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(2,980)<span></span>
</td>
<td class="num">(2,980)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Comprehensive income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">11,004<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)</a></td>
<td class="nump">23,525<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(902)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(902)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">3,033<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,033<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchases of common stock (in shares)</a></td>
<td class="num">(161,460)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchases of common stock</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(1,616)<span></span>
</td>
<td class="num">(9,569)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(11,185)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">13,984<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">13,984<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Dec. 31, 2019</a></td>
<td class="nump">26,786,459<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2019</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">268,059<span></span>
</td>
<td class="nump">324,722<span></span>
</td>
<td class="num">(7,018)<span></span>
</td>
<td class="nump">585,790<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Mar. 31, 2020</a></td>
<td class="nump">26,648,524<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Mar. 31, 2020</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">268,574<span></span>
</td>
<td class="nump">329,137<span></span>
</td>
<td class="num">(9,998)<span></span>
</td>
<td class="nump">587,740<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Dec. 31, 2019</a></td>
<td class="nump">26,786,459<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2019</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">268,059<span></span>
</td>
<td class="nump">324,722<span></span>
</td>
<td class="num">(7,018)<span></span>
</td>
<td class="nump">585,790<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">26,591<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract', window );"><strong>Other comprehensive loss</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Comprehensive income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">23,975<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">26,591<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Dec. 31, 2019</a></td>
<td class="nump">26,786,459<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2019</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">268,059<span></span>
</td>
<td class="nump">324,722<span></span>
</td>
<td class="num">(7,018)<span></span>
</td>
<td class="nump">585,790<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Jun. 30, 2020</a></td>
<td class="nump">26,706,556<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Jun. 30, 2020</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">272,231<span></span>
</td>
<td class="nump">338,625<span></span>
</td>
<td class="num">(9,634)<span></span>
</td>
<td class="nump">601,249<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Mar. 31, 2020</a></td>
<td class="nump">26,648,524<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Mar. 31, 2020</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">268,574<span></span>
</td>
<td class="nump">329,137<span></span>
</td>
<td class="num">(9,998)<span></span>
</td>
<td class="nump">587,740<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)</a></td>
<td class="nump">96,186<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">400<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">400<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">3,639<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,639<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchases of common stock (in shares)</a></td>
<td class="num">(38,154)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchases of common stock</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(382)<span></span>
</td>
<td class="num">(3,119)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(3,501)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">12,607<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">12,607<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract', window );"><strong>Other comprehensive loss</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustment</a></td>
<td class="text"> <span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">364<span></span>
</td>
<td class="nump">364<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Comprehensive income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">12,971<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)</a></td>
<td class="nump">96,186<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">400<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">400<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">3,639<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,639<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchases of common stock (in shares)</a></td>
<td class="num">(38,154)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchases of common stock</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(382)<span></span>
</td>
<td class="num">(3,119)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(3,501)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">12,607<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">12,607<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Mar. 31, 2020</a></td>
<td class="nump">26,648,524<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Mar. 31, 2020</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">268,574<span></span>
</td>
<td class="nump">329,137<span></span>
</td>
<td class="num">(9,998)<span></span>
</td>
<td class="nump">587,740<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Jun. 30, 2020</a></td>
<td class="nump">26,706,556<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Jun. 30, 2020</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">272,231<span></span>
</td>
<td class="nump">338,625<span></span>
</td>
<td class="num">(9,634)<span></span>
</td>
<td class="nump">$ 601,249<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Dec. 31, 2020</a></td>
<td class="nump">26,776,796<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">26,776,796<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2020</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">284,848<span></span>
</td>
<td class="nump">362,901<span></span>
</td>
<td class="num">(3,420)<span></span>
</td>
<td class="nump">$ 644,356<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)</a></td>
<td class="nump">48,955<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(290)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(290)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesAcquisitions', window );">Common shares issued for Hubs acquisition (in shares)</a></td>
<td class="nump">863,995<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueAcquisitions', window );">Common shares issued for Hubs acquisition</a></td>
<td class="nump">$ 1<span></span>
</td>
<td class="nump">166,708<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">166,709<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">5,620<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">5,620<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchases of common stock (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchases of common stock</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,712<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,712<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract', window );"><strong>Other comprehensive loss</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustment</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(6,842)<span></span>
</td>
<td class="num">(6,842)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax', window );">Net unrealized gains (losses) on investments in securities</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">166<span></span>
</td>
<td class="nump">166<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Comprehensive income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(2,964)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)</a></td>
<td class="nump">48,955<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(290)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(290)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">5,620<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">5,620<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchases of common stock (in shares)</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchases of common stock</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,712<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">$ 3,712<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Dec. 31, 2020</a></td>
<td class="nump">26,776,796<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">26,776,796<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2020</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">284,848<span></span>
</td>
<td class="nump">362,901<span></span>
</td>
<td class="num">(3,420)<span></span>
</td>
<td class="nump">$ 644,356<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Mar. 31, 2021</a></td>
<td class="nump">27,689,746<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Mar. 31, 2021</a></td>
<td class="nump">$ 28<span></span>
</td>
<td class="nump">456,886<span></span>
</td>
<td class="nump">366,613<span></span>
</td>
<td class="num">(10,096)<span></span>
</td>
<td class="nump">$ 813,431<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Dec. 31, 2020</a></td>
<td class="nump">26,776,796<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">26,776,796<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2020</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">284,848<span></span>
</td>
<td class="nump">362,901<span></span>
</td>
<td class="num">(3,420)<span></span>
</td>
<td class="nump">$ 644,356<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">16,627<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract', window );"><strong>Other comprehensive loss</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Comprehensive income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">11,932<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 16,627<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Dec. 31, 2020</a></td>
<td class="nump">26,776,796<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">26,776,796<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2020</a></td>
<td class="nump">$ 27<span></span>
</td>
<td class="nump">284,848<span></span>
</td>
<td class="nump">362,901<span></span>
</td>
<td class="num">(3,420)<span></span>
</td>
<td class="nump">$ 644,356<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Jun. 30, 2021</a></td>
<td class="nump">27,761,063<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">27,761,063<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Jun. 30, 2021</a></td>
<td class="nump">$ 28<span></span>
</td>
<td class="nump">461,597<span></span>
</td>
<td class="nump">378,467<span></span>
</td>
<td class="num">(8,115)<span></span>
</td>
<td class="nump">$ 831,977<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Mar. 31, 2021</a></td>
<td class="nump">27,689,746<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Mar. 31, 2021</a></td>
<td class="nump">$ 28<span></span>
</td>
<td class="nump">456,886<span></span>
</td>
<td class="nump">366,613<span></span>
</td>
<td class="num">(10,096)<span></span>
</td>
<td class="nump">813,431<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)</a></td>
<td class="nump">85,317<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(81)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(81)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">4,941<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">4,941<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchases of common stock (in shares)</a></td>
<td class="num">(14,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchases of common stock</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(149)<span></span>
</td>
<td class="num">(1,061)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(1,210)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">12,915<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">12,915<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract', window );"><strong>Other comprehensive loss</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustment</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">2,030<span></span>
</td>
<td class="nump">2,030<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax', window );">Net unrealized gains (losses) on investments in securities</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(49)<span></span>
</td>
<td class="num">(49)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Comprehensive income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">14,896<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)</a></td>
<td class="nump">85,317<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Common shares issued on exercise of options and other, net of shares withheld for tax obligations</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(81)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(81)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">4,941<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">4,941<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares', window );">Repurchases of common stock (in shares)</a></td>
<td class="num">(14,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue', window );">Repurchases of common stock</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="num">(149)<span></span>
</td>
<td class="num">(1,061)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(1,210)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">12,915<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">12,915<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Mar. 31, 2021</a></td>
<td class="nump">27,689,746<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Mar. 31, 2021</a></td>
<td class="nump">$ 28<span></span>
</td>
<td class="nump">456,886<span></span>
</td>
<td class="nump">366,613<span></span>
</td>
<td class="num">(10,096)<span></span>
</td>
<td class="nump">$ 813,431<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Balance (in shares) at Jun. 30, 2021</a></td>
<td class="nump">27,761,063<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">27,761,063<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Jun. 30, 2021</a></td>
<td class="nump">$ 28<span></span>
</td>
<td class="nump">$ 461,597<span></span>
</td>
<td class="nump">$ 378,467<span></span>
</td>
<td class="num">$ (8,115)<span></span>
</td>
<td class="nump">$ 831,977<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 20<br> -Section 55<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=122142933&amp;loc=d3e11149-113907<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5047-113901<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 20<br> -Section 55<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=122142933&amp;loc=d3e11178-113907<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 35<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123468992&amp;loc=d3e4534-113899<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_CommonStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_CommonStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ComprehensiveIncomeNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(24))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e557-108580<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(26))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669625-108580<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669619-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ComprehensiveIncomeNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL124452729-227067<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669619-108580<br><br>Reference 25: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -SubTopic 20<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=109222650&amp;loc=SL51721683-107760<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669625-108580<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669646-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, after tax and before adjustment, of unrealized holding gain (loss) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale). Excludes unrealized gain (loss) on investment in debt security measured at amortized cost (held-to-maturity) from transfer to available-for-sale.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669646-108580<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e637-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_StockIssuedDuringPeriodSharesAcquisitions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of shares of stock issued during the period pursuant to acquisitions.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_StockIssuedDuringPeriodSharesAcquisitions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_StockIssuedDuringPeriodValueAcquisitions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Value of stock issued pursuant to acquisitions during the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.29-31)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_StockIssuedDuringPeriodValueAcquisitions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Value of stock issued as a result of the exercise of stock options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.29-31)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_StockRepurchasedAndRetiredDuringPeriodShares">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of shares that have been repurchased and retired during the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_StockRepurchasedAndRetiredDuringPeriodShares</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_StockRepurchasedAndRetiredDuringPeriodValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Equity impact of the value of stock that has been repurchased and retired during the period. The excess of the purchase price over par value can be charged against retained earnings (once the excess is fully allocated to additional paid in capital).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_StockRepurchasedAndRetiredDuringPeriodValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_StockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -URI http://asc.fasb.org/extlink&amp;oid=122038336&amp;loc=d3e74512-122707<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>16
<FILENAME>R6.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485948488280">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Consolidated Statements of Cash Flows (Unaudited) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract', window );"><strong>Operating activities</strong></a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 16,627<span></span>
</td>
<td class="nump">$ 26,591<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract', window );"><strong>Adjustments to reconcile net income to net cash provided by operating activities:</strong></a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_DepreciationDepletionAndAmortization', window );">Depreciation and amortization</a></td>
<td class="nump">20,127<span></span>
</td>
<td class="nump">15,855<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensation', window );">Stock-based compensation expense</a></td>
<td class="nump">10,561<span></span>
</td>
<td class="nump">6,672<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxExpenseBenefit', window );">Deferred taxes</a></td>
<td class="nump">419<span></span>
</td>
<td class="nump">5,651<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments', window );">Amortization of marketable securities</a></td>
<td class="nump">261<span></span>
</td>
<td class="nump">129<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss', window );">Realized gain on available-sale-securities</a></td>
<td class="num">(117)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1', window );">Fair value of contingent consideration</a></td>
<td class="num">(7,763)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherNoncashIncomeExpense', window );">Other</a></td>
<td class="nump">125<span></span>
</td>
<td class="num">(854)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract', window );"><strong>Changes in operating assets and liabilities:</strong></a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsReceivable', window );">Accounts receivable</a></td>
<td class="num">(23,296)<span></span>
</td>
<td class="num">(4,292)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInInventories', window );">Inventories</a></td>
<td class="nump">1,727<span></span>
</td>
<td class="num">(801)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets', window );">Prepaid expenses and other</a></td>
<td class="nump">1,810<span></span>
</td>
<td class="num">(1,068)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable', window );">Income taxes</a></td>
<td class="num">(4,015)<span></span>
</td>
<td class="num">(1,341)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsPayable', window );">Accounts payable</a></td>
<td class="nump">5,011<span></span>
</td>
<td class="nump">1,082<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInOtherOperatingLiabilities', window );">Accrued liabilities and other</a></td>
<td class="num">(748)<span></span>
</td>
<td class="nump">5,793<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInOperatingActivities', window );">Net cash provided by operating activities</a></td>
<td class="nump">20,729<span></span>
</td>
<td class="nump">53,417<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract', window );"><strong>Investing activities</strong></a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Purchases of property, equipment and other capital assets</a></td>
<td class="num">(23,929)<span></span>
</td>
<td class="num">(33,305)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Cash used for acquisitions, net of cash acquired</a></td>
<td class="num">(127,413)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireOtherInvestments', window );">Purchases of other assets and investments</a></td>
<td class="nump">0<span></span>
</td>
<td class="num">(3,000)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt', window );">Purchases of marketable securities</a></td>
<td class="num">(15,159)<span></span>
</td>
<td class="num">(57,212)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities', window );">Proceeds from sales of marketable securities</a></td>
<td class="nump">47,694<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities', window );">Proceeds from maturities of marketable securities</a></td>
<td class="nump">13,725<span></span>
</td>
<td class="nump">28,225<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInInvestingActivities', window );">Net cash used in investing activities</a></td>
<td class="num">(105,082)<span></span>
</td>
<td class="num">(65,292)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract', window );"><strong>Financing activities</strong></a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions', window );">Proceeds from exercises of stock options</a></td>
<td class="nump">3,838<span></span>
</td>
<td class="nump">2,855<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation', window );">Purchases of shares withheld for tax obligations</a></td>
<td class="num">(4,209)<span></span>
</td>
<td class="num">(3,367)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsForRepurchaseOfCommonStock', window );">Repurchases of common stock</a></td>
<td class="num">(1,210)<span></span>
</td>
<td class="num">(14,686)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinanceLeasePrincipalPayments', window );">Principal repayments of finance lease obligations</a></td>
<td class="num">(275)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInFinancingActivities', window );">Net cash used in financing activities</a></td>
<td class="num">(1,856)<span></span>
</td>
<td class="num">(15,198)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations', window );">Effect of exchange rate changes on cash and cash equivalents</a></td>
<td class="nump">515<span></span>
</td>
<td class="num">(149)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect', window );">Net decrease in cash and cash equivalents</a></td>
<td class="num">(85,694)<span></span>
</td>
<td class="num">(27,222)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations', window );">Cash and cash equivalents, beginning of period</a></td>
<td class="nump">127,603<span></span>
</td>
<td class="nump">125,225<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations', window );">Cash and cash equivalents, end of period</a></td>
<td class="nump">$ 41,909<span></span>
</td>
<td class="nump">$ 98,003<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The sum of the periodic adjustments of the differences between securities' face values and purchase prices that are charged against earnings. This is called accretion if the security was purchased at a discount and amortization if it was purchased at premium. As a noncash item, this element is an adjustment to net income when calculating cash provided by or used in operations using the indirect method.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in the value of a contingent consideration liability, including, but not limited to, differences arising upon settlement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e7008-128479<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including, but not limited to, disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=123431023&amp;loc=SL98516268-108586<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3521-108585<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3044-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in cash, cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including effect from exchange rate change. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 230<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123444420&amp;loc=d3e33268-110906<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3521-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of realized gain (loss) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27357-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_DeferredIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.1)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.2)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DeferredIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_DepreciationDepletionAndAmortization">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate expense recognized in the current period that allocates the cost of tangible assets, intangible assets, or depleting assets to periods that benefit from use of the assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DepreciationDepletionAndAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) from effect of exchange rate changes on cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; held in foreign currencies; including, but not limited to, disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 230<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123444420&amp;loc=d3e33268-110906<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_FinanceLeasePrincipalPayments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow for principal payment on finance lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918643-209977<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918686-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FinanceLeasePrincipalPayments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_IncreaseDecreaseInAccountsPayable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the aggregate amount of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_IncreaseDecreaseInAccountsPayable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_IncreaseDecreaseInAccountsReceivable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_IncreaseDecreaseInAccountsReceivable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the period in the amount due for taxes based on the reporting entity's earnings or attributable to the entity's income earning process (business presence) within a given jurisdiction.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_IncreaseDecreaseInInventories">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the aggregate value of all inventory held by the reporting entity, associated with underlying transactions that are classified as operating activities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_IncreaseDecreaseInInventories</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_IncreaseDecreaseInOperatingCapitalAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_IncreaseDecreaseInOperatingCapitalAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_IncreaseDecreaseInOtherOperatingLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in operating liabilities classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_IncreaseDecreaseInOtherOperatingLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in prepaid expenses, and assets classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_NetCashProvidedByUsedInFinancingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow (outflow) from financing activities, including discontinued operations. Financing activity cash flows include obtaining resources from owners and providing them with a return on, and a return of, their investment; borrowing money and repaying amounts borrowed, or settling the obligation; and obtaining and paying for other resources obtained from creditors on long-term credit.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3521-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_NetCashProvidedByUsedInFinancingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_NetCashProvidedByUsedInInvestingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow (outflow) from investing activities, including discontinued operations. Investing activity cash flows include making and collecting loans and acquiring and disposing of debt or equity instruments and property, plant, and equipment and other productive assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3521-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_NetCashProvidedByUsedInInvestingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_NetCashProvidedByUsedInOperatingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow (outflow) from operating activities, including discontinued operations. Operating activity cash flows include transactions, adjustments, and changes in value not defined as investing or financing activities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3536-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3521-108585<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_NetCashProvidedByUsedInOperatingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</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_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL124452729-227067<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669619-108580<br><br>Reference 25: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -SubTopic 20<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=109222650&amp;loc=SL51721683-107760<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669625-108580<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OtherNoncashIncomeExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of income (expense) included in net income that results in no cash inflow (outflow), classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OtherNoncashIncomeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsForRepurchaseOfCommonStock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow to reacquire common stock during the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3291-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PaymentsForRepurchaseOfCommonStock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow to satisfy grantee's tax withholding obligation for award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3291-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow to acquire investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3213-108585<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3151-108585<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=124260329&amp;loc=d3e26853-111562<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsToAcquireOtherInvestments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow to acquire investments classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PaymentsToAcquireOtherInvestments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PaymentsToAcquirePropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow from issuance of shares under share-based payment arrangement. Includes, but is not limited to, option exercised.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=SL79508275-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3255-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow from maturity, prepayment and call of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=124260329&amp;loc=d3e26853-111562<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3151-108585<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 12<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3179-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash inflow associated with the sale of securities that had been designated as held-to-maturity. Excludes proceeds from maturities, prepayments and calls by the issuer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=124260329&amp;loc=d3e26853-111562<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 12<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3179-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_ShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of noncash expense for share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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>XML
<SEQUENCE>17
<FILENAME>R7.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485861490440">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 1 - Basis of Presentation<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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="top.Show.showAR( this, 'defref_us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock', window );">Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">1</em> &#8211; Basis of Presentation</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The unaudited interim Consolidated Financial Statements of Proto Labs, Inc. (Protolabs, the Company, we, us or our) have been prepared in accordance with accounting principles generally accepted in the United States of America (U.S. GAAP) for interim financial information and with the instructions to Form <em style="font: inherit;">10</em>-Q and Article&#160;<em style="font: inherit;">10</em> of Regulation S-<em style="font: inherit;">X.</em> In the opinion of management, the accompanying financial statements reflect all adjustments necessary for a fair presentation of the Company&#8217;s statements of financial position, results of operations and cash flows for the periods presented. Except as otherwise disclosed herein, these adjustments consist of normal, recurring items. Operating results for interim periods are <em style="font: inherit;">not</em> necessarily indicative of results that <em style="font: inherit;"> may </em>be expected for the fiscal year as a whole.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The preparation of the financial statements in conformity with U.S. GAAP requires management to make estimates and assumptions that affect the reported amounts of assets, liabilities, revenues, expenses, and the related disclosures at the date of the financial statements and during the reporting period. Actual results could materially differ from these estimates. For further information, refer to the audited Consolidated Financial Statements and Notes thereto included in the Company&#8217;s Annual Report on Form <em style="font: inherit;">10</em>-K for the year ended&#160;<em style="font: inherit;"> December 31, 2020</em> as filed with the Securities and Exchange Commission (SEC) on <em style="font: inherit;"> February 19, 2021.</em></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The accompanying Consolidated Balance Sheet as of <em style="font: inherit;"> December 31, 2020</em> was derived from the audited Consolidated Financial Statements but does <em style="font: inherit;">not</em> include all disclosures required by U.S. GAAP for a full set of financial statements. This Form <em style="font: inherit;">10</em>-Q should be read in conjunction with the Company&#8217;s Consolidated Financial Statements and Notes included in the Annual Report on Form <em style="font: inherit;">10</em>-K filed on <em style="font: inherit;"> February 19, 2021 </em>as referenced above.</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for organization, consolidation and basis of presentation of financial statements disclosure.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -URI http://asc.fasb.org/topic&amp;trid=2122149<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -URI http://asc.fasb.org/topic&amp;trid=2197479<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>XML
<SEQUENCE>18
<FILENAME>R8.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485861517688">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 2 - Recent Accounting Pronouncements<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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="top.Show.showAR( this, 'defref_us-gaap_SignificantAccountingPoliciesTextBlock', window );">Significant Accounting Policies [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">2</em> &#8211; Recent Accounting Pronouncements</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Recently Adopted Accounting Pronouncements</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">In <em style="font: inherit;"> December 2019, </em>the Financial Accounting Standards Board issued Accounting Standards Update (ASU) <em style="font: inherit;">2019</em>-<em style="font: inherit;">12,</em> <i>Income Taxes (Topic <em style="font: inherit;">740</em>): Simplifying the Accounting for Income Taxes</i> (ASU <em style="font: inherit;">2019</em>-<em style="font: inherit;">12</em>). ASU <em style="font: inherit;">2019</em>-<em style="font: inherit;">12</em> attempts to simplify aspects of accounting for franchise taxes and enacted changes in tax laws or rates and clarifies the accounting for transactions that result in a step-up in the tax basis of goodwill. ASU <em style="font: inherit;">2019</em>-<em style="font: inherit;">12</em> is effective for public business entities for fiscal years beginning after <em style="font: inherit;"> December 15, 2020, </em>including interim periods within that fiscal year. The Company adopted ASU <em style="font: inherit;">2019</em>-<em style="font: inherit;">12</em> on <em style="font: inherit;"> January 1, 2021 </em>and there was <em style="font: inherit;">no</em> material impact on the Company&#8217;s consolidated financial statements.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_SignificantAccountingPoliciesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for all significant accounting policies of the reporting entity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123372394&amp;loc=d3e18726-107790<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -URI http://asc.fasb.org/topic&amp;trid=2122369<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_SignificantAccountingPoliciesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>XML
<SEQUENCE>19
<FILENAME>R9.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485861411352">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Net Income Per Common Share<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareTextBlock', window );">Earnings Per Share [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">3</em> &#8211; Net Income per Common Share</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Basic net income per share is computed based on the weighted-average number of common shares outstanding. Diluted net income per share is computed based on the weighted-average number of common shares outstanding, increased by the number of additional shares that would have been outstanding had potentially dilutive common shares been issued and reduced by the number of shares the Company could have repurchased from the proceeds from issuance of the potentially dilutive shares. Potentially dilutive shares of common stock include stock options, restricted stock units and restricted stock awards granted under stock-based compensation plans and shares committed to be purchased under the employee stock purchase plan. Performance stock units&#160;are excluded from the calculation of dilutive potential common shares until the performance conditions have been satisfied.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The table below sets forth the computation of basic and diluted net income per share:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 6pt auto 0pt; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 48%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">(in thousands, except share and per share amounts)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Net income</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">12,915</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">12,607</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">16,627</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">26,591</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Basic - weighted-average shares outstanding:</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">27,735,732</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">26,660,498</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">27,600,684</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">26,718,652</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Effect of dilutive securities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Employee stock options and other</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">9,138</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">100,368</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">140,780</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">119,286</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Diluted - weighted-average shares outstanding:</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">27,744,870</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">26,760,866</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">27,741,464</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">26,837,938</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Net income per share:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Basic</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">0.47</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">0.47</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">0.60</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1.00</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Diluted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">0.47</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">0.47</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">0.60</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">0.99</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0pt auto 6pt; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_EarningsPerShareTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for earnings per share.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=109243012&amp;loc=SL65017193-207537<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -URI http://asc.fasb.org/topic&amp;trid=2144383<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3630-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_EarningsPerShareTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>XML
<SEQUENCE>20
<FILENAME>R10.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485861517688">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Business Combinations<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationDisclosureTextBlock', window );">Business Combination Disclosure [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">4</em> &#8211; Business Combinations</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">On <em style="font: inherit;"> January 22, 2021, </em>the Company acquired all outstanding shares of <em style="font: inherit;">3D</em> Hubs, Inc. (&#8220;Hubs&#8221;), for $294.1 million, consisting of $127.4 million in cash and 863,995 shares of the Company's common stock valued at $166.7 million on the date of close. Up to an additional $52.8 million of contingent consideration is payable after closing, subject to the satisfaction of performance-based targets during fiscal year <em style="font: inherit;">2021</em> and fiscal year <em style="font: inherit;">2022,</em> consisting of up to $25.0 million in cash and up to 143,983 shares of the Company's common stock valued at $27.8 million on the date of close.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">Hubs is based in Amsterdam, Netherlands and is a leading online manufacturing platform that provides customers with on-demand access to a global network of premium manufacturing partners. The acquisition enhances the Company&#8217;s value proposition by expanding the customer offerings, enabling the Company to more holistically serve its customers.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">The fair value of the consideration paid for this acquisition has been allocated on a preliminary basis to the assets purchased and liabilities assumed based on their estimated fair values as of the acquisition date, with any excess recorded as goodwill.&#160; The goodwill associated with the acquisition represents both the strategic and growth opportunities by significantly expanding the customer offering with a network of premium manufacturing partners. The goodwill related to the acquisition is <em style="font: inherit;">not</em> deductible for tax purposes.&#160;</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">The Company recorded a contingent consideration liability of $13.6 million as of the acquisition date representing the estimated fair value of the amounts payable to former shareholders, as outlined under the terms of the merger agreement, payable subject to the satisfaction of performance-based targets during fiscal year <em style="font: inherit;">2021</em> and fiscal year <em style="font: inherit;">2022,</em> consisting of up to <em style="font: inherit;">$25.0</em> million in cash and up to <em style="font: inherit;">143,983</em> shares of the Company's common stock valued at <em style="font: inherit;">$27.8</em> million on the date of close. The fair value of the contingent consideration (Level <em style="font: inherit;">3</em>) is determined using a Monte Carlo pricing model. In the <em style="font: inherit;">second</em> quarter of <em style="font: inherit;">2021,</em> the Company recorded a $7.8 million decrease to the estimated fair value of the contingent consideration liabilities, which was included as a decrease in general and administrative expense in the Consolidated Statements of Comprehensive Income. Fluctuations due to foreign currency translation have been recorded in the Consolidated Statements of Shareholders&#8217; Equity.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">The results of Hubs since the date of acquisition have been included with Protolabs' results. Pro forma disclosures of the consolidated results of the Company with the full year effects of Hubs, as if the acquisition had occurred on <em style="font: inherit;"> January 1, 2020, </em>are <em style="font: inherit;">not</em> required and have <em style="font: inherit;">not</em> been separately presented since the impact to the Company's results of operations was <em class="GFJY4-DIN-com-rdg-thunderdome-client-resources-CssResource-html-element-highlighted" style="font: inherit;">not</em> material.</p>
   <p style="font-family:'Times New Roman';font-size:10pt;font-variant:normal;margin:0pt;">&#160;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">The acquisition has been accounted for under the acquisition method of accounting in accordance with ASC <em style="font: inherit;">805,</em> <i>Business Combinations</i>. In the <em style="font: inherit;">second</em> quarter of <em style="font: inherit;">2021,</em> the Company recorded adjustments to the preliminary allocation, including a $3.9 million decrease to intangible assets, a $6.4 million increase to goodwill, a $3.3&#160;million increase to contingent consideration, a $0.5 million decrease to deferred tax liabilities, and a decrease to cash paid of $0.3 million. The adjustments were driven by changes to the preliminary valuation and finalization of the working capital calculation. As of <em style="font: inherit;"> June 30, 2021, </em>the allocation of purchase price to assets and liabilities is preliminary. The purchase price allocation will be finalized in <em style="font: inherit;">2021.</em> The preliminary allocation is as follows:</p>
   <hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 6pt auto 0pt auto;"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><b><em style="font: inherit;">Acquisition</em></b></td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Assets acquired:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Current assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">2,497</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Intangible assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">30,770</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Goodwill</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">281,845</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Other long-term assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,139</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total assets acquired</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">316,251</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Liabilities assumed:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt">Current contingent consideration</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt">7,093</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Current liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">5,666</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt">Long-term contingent consideration</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt">6,507</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Long-term deferred tax liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">2,608</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Other long-term liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">255</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total liabilities assumed</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">22,129</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net assets acquired</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">294,122</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Cash paid</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">133,847</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Cash acquired</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(6,434</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net cash consideration</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">127,413</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Equity portion of purchase price</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">166,709</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total purchase consideration</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">294,122</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0pt auto 6pt auto;"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for a business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities. The disclosure may include leverage buyout transactions (as applicable).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -URI http://asc.fasb.org/topic&amp;trid=2303972<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>21
<FILENAME>R11.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485863618472">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Goodwill and Other Intangible Assets<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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="top.Show.showAR( this, 'defref_us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock', window );">Goodwill and Intangible Assets Disclosure [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">5</em> &#8211; Goodwill and Other Intangible Assets</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The changes in the carrying amount of goodwill during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> were as follows:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 83%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><b><em style="font: inherit;">Six Months Ended June 30, 2021</em></b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Balance as of the beginning of the period</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">128,752</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Goodwill acquired during the period</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">281,845</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt">Foreign currency translation adjustments</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">(3,406</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Balance as of the end of the period</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">407,191</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Goodwill increased $281.8 million during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021 </em>as a result of our acquisition of Hubs. Goodwill has been allocated to the acquired Hubs entities consisting of goodwill of&#160;<span style="-sec-ix-hidden:c75343673">&#8364;106.5</span> million in Europe and $152.2 million in the United States as of the date of the acquisition. The Euro denominated goodwill is translated at the end of each period using the current exchange rates resulting in a foreign currency translation adjustment that is recorded as a component of Other Comprehensive Income.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Intangible assets other than goodwill at&#160;<em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;"> December 31, 2020</em> were as follows:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="10" style="width: 19%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">June 30, 2021</em></em></em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="10" style="width: 19%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2020</em></em></em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Useful</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="1" rowspan="1" style="padding: 0px; width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Weighted Average</em></b></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Gross</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Accumulated Amortization</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Net</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Gross</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Accumulated Amortization</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Net</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Life (in years)</em></b></p> </td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="1" rowspan="1" style="padding: 0px; width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Useful Life Remaining (in years)</em></b></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Intangible assets with finite lives:</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 5%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 7%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 5%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 5%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 7%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 5%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 7%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 14%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Marketing assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$930</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$(667</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$263</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$930</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$(620</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$310</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">10.0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2.8</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Non-compete agreement</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">853</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(297</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">556</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">270</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(238</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">32</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2.0 - 5.0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3.3</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Software technology</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">13,229</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(4,330</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">8,899</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">13,229</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(3,645</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">9,584</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">10.0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">7.0</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Software platform</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">27,170</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(1,089</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">26,081</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">10.0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">9.6</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Tradenames</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">365</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(51</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">314</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3.0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2.6</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Customer relationships</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">12,292</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">(6,731</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">5,561</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">10,070</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">(5,646</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">4,424</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">3.0 - 9.0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2.3</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total intangible assets</p> </td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 5%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">54,839</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">&#160;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 7%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">(13,165</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 5%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">41,674</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">&#160;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 5%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">24,499</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">&#160;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 7%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">(10,149</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 5%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">14,350</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Intangible assets increased $30.8 million during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021 </em>as a result of our acquisition of Hubs. Intangible assets have been allocated to the acquired Hubs entities consisting of intangible assets of&#160;<span style="-sec-ix-hidden:c75343677">&#8364;11.6</span> million in Europe and $16.6 million in the United States as of the date of the acquisition. The Euro denominated intangible assets are translated at the end of each period using the current exchange rates resulting in a foreign currency translation adjustment that is recorded as a component of Other Comprehensive Income. Foreign currency losses related to intangible assets were $0.4 million as of <em style="font: inherit;"> June 30, 2021. </em>There was no foreign currency translation impact as of <em style="font: inherit;"> December 31, 2020. </em>Amortization expense for intangible assets was $1.5 million and $0.8&#160;million for the <em style="font: inherit;">three</em> months ended&#160;<em style="font: inherit;"> June 30, 2021 </em>and <em style="font: inherit;">2020</em>, respectively, and $3.0 million and $1.5 million for the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021 </em>and <em style="font: inherit;">2020,</em> respectively.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Estimated aggregated amortization expense based on the current carrying value of the amortizable intangible assets and current exchange rates is as follows:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 83%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="padding: 0px; width: 0%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Estimated Amortization Expense</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Remaining 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,130</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">2022</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">6,259</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">2023</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">6,056</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">2024</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,832</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">2025</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,750</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Thereafter</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">18,647</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total estimated amortization expense</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">41,674</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for goodwill and intangible assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -URI http://asc.fasb.org/topic&amp;trid=2144416<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>XML
<SEQUENCE>22
<FILENAME>R12.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485861517688">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 6 - Fair Value Measurements<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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="top.Show.showAR( this, 'defref_us-gaap_FairValueDisclosuresTextBlock', window );">Fair Value Disclosures [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">6</em> &#8211; Fair Value Measurements</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Accounting Standards Codification, <i>Fair Value Measuremen</i>t (ASC <em style="font: inherit;">820</em>), defines fair value as the exchange price that would be received for an asset or paid to transfer a liability (an exit price) in the principal or most advantageous market for the asset or liability in an orderly transaction between market participants on the measurement date. ASC <em style="font: inherit;">820</em> also establishes a fair value hierarchy that requires classification based on observable and unobservable inputs when measuring fair value. There are <em style="font: inherit;">three</em> levels of inputs that <em style="font: inherit;"> may </em>be used to measure fair value:</p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Level </i><em style="font: inherit;">1&#8212;Quoted</em> prices in active markets for identical assets or liabilities.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Level </i><em style="font: inherit;">2&#8212;Observable</em> inputs other than Level <em style="font: inherit;">1</em> prices such as quoted prices for similar assets or liabilities; quoted prices in markets that are <em style="font: inherit;">not</em> active; or other inputs that are observable or can be corroborated by observable market data for substantially the full term of the assets or liabilities.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><i>Level </i><em style="font: inherit;">3&#8212;Unobservable</em> inputs that are supported by little or <em style="font: inherit;">no</em> market activity and that are significant to the fair value of the assets or liabilities.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company's assets and liabilities that are required to be measured or disclosed at fair value on a recurring basis include cash and cash equivalents, marketable securities and contingent consideration. The Company&#8217;s cash consists of bank deposits. The Company&#8217;s cash equivalents measured at fair value consist of money market mutual funds. The Company determines the fair value of these investments using Level <em style="font: inherit;">1</em> inputs. The Company's marketable securities consist of&#160;short-term and long-term agency, municipal, corporate and other debt securities. Fair value for the corporate debt securities is primarily determined based on quoted market prices (Level <em style="font: inherit;">1</em>). Fair values for the U.S. municipal securities, U.S. government agency securities, certificates of deposit and U.S. treasury securities are primarily determined using dealer quotes or quoted market prices for similar securities (Level <em style="font: inherit;">2</em>). The Company's contingent consideration is the current fair value estimate of amounts owed to the former shareholders of Hubs and is determined using the Monte Carlo pricing model (Level <em style="font: inherit;">3</em>).</p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following table summarizes financial assets as of&#160;<em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;"> December 31, 2020</em> measured at fair value on a recurring basis:&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">June 30, 2021</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2020</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 40%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 1</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 2</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 3</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 1</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 2</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 3</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Financial Assets:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Cash and cash equivalents</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">40,694</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">72,225</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Money market mutual fund</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">1,215</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">55,378</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">17,951</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">29,090</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">59,860</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">29,090</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">127,603</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt"><b>Financial Liabilities:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-indent: 9pt;"> <p style="margin-top: 0pt; margin-bottom: 0pt">Contingent consideration</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">5,629</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">5,629</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">In the <em style="font: inherit;">first</em> quarter of <em style="font: inherit;">2021,</em> the Company sold held-to-maturity securities in order to partially fund the acquisition of Hubs. As a result of the sale, all remaining marketable securities were reclassified to available-for-sale securities and reported at fair value.</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">&#160;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">The Company recorded a contingent consideration liability at the acquisition date of Hubs representing the amounts payable to former shareholders, as outlined under the terms of the merger agreement, payable subject to the satisfaction of performance-based targets during fiscal year <em style="font: inherit;">2021</em> and fiscal year <em style="font: inherit;">2022,</em> consisting of up to $25.0 million in cash and up to 143,983 shares of the Company's common stock valued at $27.8 million on the date of close. The fair value of the contingent consideration (Level <em style="font: inherit;">3</em>) is determined using a Monte Carlo pricing model. Subsequent changes in the fair value of the contingent consideration liabilities have been recorded in the Consolidated Statements of Comprehensive Income. Fluctuations due to foreign currency translation have been recorded in the Consolidated Statements of Shareholders&#8217; Equity.</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_FairValueDisclosuresTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for the fair value of financial instruments (as defined), including financial assets and financial liabilities (collectively, as defined), and the measurements of those instruments as well as disclosures related to the fair value of non-financial assets and liabilities. Such disclosures about the financial instruments, assets, and liabilities would include: (1) the fair value of the required items together with their carrying amounts (as appropriate); (2) for items for which it is not practicable to estimate fair value, disclosure would include: (a) information pertinent to estimating fair value (including, carrying amount, effective interest rate, and maturity, and (b) the reasons why it is not practicable to estimate fair value; (3) significant concentrations of credit risk including: (a) information about the activity, region, or economic characteristics identifying a concentration, (b) the maximum amount of loss the entity is exposed to based on the gross fair value of the related item, (c) policy for requiring collateral or other security and information as to accessing such collateral or security, and (d) the nature and brief description of such collateral or security; (4) quantitative information about market risks and how such risks are managed; (5) for items measured on both a recurring and nonrecurring basis information regarding the inputs used to develop the fair value measurement; and (6) for items presented in the financial statement for which fair value measurement is elected: (a) information necessary to understand the reasons for the election, (b) discussion of the effect of fair value changes on earnings, (c) a description of [similar groups] items for which the election is made and the relation thereof to the balance sheet, the aggregate carrying value of items included in the balance sheet that are not eligible for the election; (7) all other required (as defined) and desired information.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123874694&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FairValueDisclosuresTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>XML
<SEQUENCE>23
<FILENAME>R13.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485861497224">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 7 - Marketable Securities<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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="top.Show.showAR( this, 'defref_us-gaap_InvestmentTextBlock', window );">Investment [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">7</em> &#8211; Marketable Securities</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company invests in short-term and long-term agency, municipal, corporate and other debt securities. As of <em style="font: inherit;"> June 30, 2021 </em>the securities are categorized as available-for-sale and are recorded at fair value. As of <em style="font: inherit;"> December 31, 2020, </em>the securities were categorized as held-to-maturity and were recorded at amortized cost, net of an allowance for credit losses. The change in categorization was a result of the sale of securities in the <em style="font: inherit;">first</em> quarter of <em style="font: inherit;">2021</em> in order to partially fund the acquisition of Hubs and did <em style="font: inherit;">not</em> have a material impact on our financial statements. The following table summarizes information regarding the Company&#8217;s short-term and long-term marketable securities as of&#160;<em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;"> December 31, 2020</em>:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">June 30, 2021</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 56%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Cost</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Unrealized Gains</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Unrealized Losses</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">U.S. municipal securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">20,968</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">43</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(17</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">20,994</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Corporate debt securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">19,062</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">68</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(29</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">19,101</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">U.S. government agency securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">1,500</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(2</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">1,498</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Certificates of deposit/time deposits</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">5,394</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">54</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">5,448</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">46,924</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">165</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(48</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">47,041</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2020</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 56%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Cost</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Unrealized Gains</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Unrealized Losses</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. municipal securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">25,003</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">83</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">25,084</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Corporate debt securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">42,048</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">211</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(11</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">42,248</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. government agency securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">18,500</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(10</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">18,496</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Certificates of deposit/time deposits</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,395</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">93</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,488</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Commercial paper</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">2,499</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">2,499</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">93,445</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">393</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(23</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">93,815</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Fair values for the corporate debt securities are primarily determined based on quoted market prices (Level <em style="font: inherit;">1</em>). Fair values for the U.S. municipal securities, U.S. government agency securities, certificates of deposit and U.S. treasury securities are primarily determined using dealer quotes or quoted market prices for similar securities (Level <em style="font: inherit;">2</em>).</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">During the <em style="font: inherit;">first</em> quarter of <em style="font: inherit;">2020,</em> the Company adopted the FASB ASU <em style="font: inherit;">2016</em>-<em style="font: inherit;">13,</em> <i>Financial Instruments &#8211; Credit Losses.</i> The Company calculated the expected credit loss for each security in its portfolio using the probability-of-default method. The Company concluded the adoption of the guidance had <em style="font: inherit;">no</em> material impact on its consolidated financial statements.&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Classification of marketable securities as current or non-current is based upon the security&#8217;s maturity date as of the date of these financial statements.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The&#160;<em style="font: inherit;"> June 30, 2021</em> balance of available-for-sale debt securities by contractual maturity is shown in the following table at fair value. Actual maturities <em style="font: inherit;"> may </em>differ from contractual maturities because the issuers of the securities <em style="font: inherit;"> may </em>have the right to prepay obligations without prepayment penalties.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">June 30,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Due in one year or less</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">18,341</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Due after one year through five years</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">28,700</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">47,041</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_InvestmentTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for investment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 321<br> -URI http://asc.fasb.org/topic&amp;trid=75115024<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -URI http://asc.fasb.org/topic&amp;trid=2196928<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 325<br> -URI http://asc.fasb.org/topic&amp;trid=2197064<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -URI http://asc.fasb.org/topic&amp;trid=2196965<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_InvestmentTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>XML
<SEQUENCE>24
<FILENAME>R14.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485861517688">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Inventory<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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="top.Show.showAR( this, 'defref_us-gaap_InventoryDisclosureTextBlock', window );">Inventory Disclosure [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">8</em> &#8211; Inventory </b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Inventory consists primarily of raw materials, which are recorded at the lower of cost or market using the standard cost method, which approximates <em style="font: inherit;">first</em>-in, <em style="font: inherit;">first</em>-out (FIFO) cost. The Company periodically reviews its inventory for slow-moving, damaged and discontinued items and provides allowances to reduce such items identified to their recoverable amounts.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company&#8217;s inventory consisted of the following as of the dates indicated:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 6pt auto 0px; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 977px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">June 30,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">December 31,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 977px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 977px; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Total inventory</p> </td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">9,395</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">11,122</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 977px; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Allowance for obsolescence</p> </td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(284</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(260</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 977px;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Inventory, net of allowance</p> </td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">9,111</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,862</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto 6pt; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_InventoryDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for inventory. Includes, but is not limited to, the basis of stating inventory, the method of determining inventory cost, the classes of inventory, and the nature of the cost elements included in inventory.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -URI http://asc.fasb.org/topic&amp;trid=2126998<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_InventoryDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>XML
<SEQUENCE>25
<FILENAME>R15.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485861384952">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Stock-based Compensation<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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="top.Show.showAR( this, 'defref_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock', window );">Share-based Payment Arrangement [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">9</em> &#8211; Stock-Based Compensation</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Under the Company&#8217;s <em style="font: inherit;">2012</em> Long-Term Incentive Plan, as amended (the <em style="font: inherit;">2012</em> Plan), the Company has the ability to grant stock options, stock appreciation rights (SARs), restricted stock, restricted stock units, other stock-based awards and cash incentive awards. Awards under the <em style="font: inherit;">2012</em> Plan have a maximum term of <span style="-sec-ix-hidden:c75343967">ten</span> years from the date of grant. The compensation committee <em style="font: inherit;"> may </em>provide that the vesting or payment of any award will be subject to the attainment of specified performance measures in addition to the satisfaction of any continued service requirements and the compensation committee will determine whether such measures have been achieved. The per-share exercise price of stock options and SARs granted under the <em style="font: inherit;">2012</em> Plan generally <em style="font: inherit;"> may </em><em style="font: inherit;">not</em> be less than the fair market value of a share of our common stock on the date of the grant.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Employee Stock Purchase Plan</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company&#8217;s <em style="font: inherit;">2012</em> Employee Stock Purchase Plan (ESPP) allows eligible employees to purchase a variable number of shares of the Company&#8217;s common stock each offering period at a discount through payroll deductions of up to 15 percent of their eligible compensation, subject to plan limitations. The ESPP provides for <span style="-sec-ix-hidden:c75343972">six</span>-month offering periods with a single purchase period ending <em style="font: inherit;"> May&#160;</em><em style="font: inherit;">15</em> and <em style="font: inherit;"> November&#160;</em><em style="font: inherit;">15,</em> respectively. At the end of each offering period, employees are able to purchase shares at 85 percent of the lower of the fair market value of the Company&#8217;s common stock on the <em style="font: inherit;">first</em> trading day of the offering period or on the last trading day of the offering period.</p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Stock-Based Compensation Expense</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Stock-based compensation expense was $4.9 million and $3.6&#160;million for the <em style="font: inherit;">three</em> months ended&#160;<em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;">2020</em>, respectively, and $10.6 million and $6.7 million for the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021 </em>and <em style="font: inherit;">2020,</em> respectively.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Stock Options</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following table summarizes stock option activity during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em>:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Weighted-</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Average</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Stock Options</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Exercise Price</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at December 31, 2020</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">229,531</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">86.46</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Granted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">57,901</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">128.14</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Exercised</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(28,991</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">58.78</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Forfeited</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(8,547</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">101.65</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Options outstanding at June 30, 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">249,894</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">98.81</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Exercisable at June 30, 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">116,452</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">81.38</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The outstanding options generally have a term of <span style="-sec-ix-hidden:c75343986">ten</span> years. For employees, options granted become exercisable ratably over the vesting period, which is generally a period from <span style="-sec-ix-hidden:c75343987">four</span> to <span style="-sec-ix-hidden:c75343988">five</span> years, beginning on the <em style="font: inherit;">first</em> anniversary of the grant date, subject to the employee&#8217;s continuing service to the Company. For the board of directors, options generally become exercisable in full on the <em style="font: inherit;">first</em> anniversary of the grant date.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The weighted-average grant date fair value of options that were granted during the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> was $57.26.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following table provides the assumptions used in the Black-Scholes pricing model valuation of options during the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;">2020</em>:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr style="vertical-align: bottom; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><b>Six Months Ended June 30,</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="vertical-align: bottom; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><b>2021</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><b>2020</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0.80 - 1.12%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0.50 - 1.47%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected life (years)</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">6.25</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">6.25</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">45.28 - 45.53%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">42.40 - 43.83%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 90%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">As of <em style="font: inherit;"> June 30, 2021</em>, there was $5.8 million of unrecognized compensation expense related to unvested stock options, which is expected to be recognized over a weighted-average period of 3.0&#160;years.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Restricted Stock </b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Restricted stock awards&#160;are share-settled awards and restrictions lapse ratably over the vesting period, which is generally a period from <span style="-sec-ix-hidden:c75343998">three</span> to <span style="-sec-ix-hidden:c75343999">five</span> years, beginning on the <em style="font: inherit;">first</em> anniversary of the grant date, subject to the employee's continuing service to the Company. For the board of directors, restrictions generally lapse in full on the <em style="font: inherit;">first</em> anniversary of the grant date.&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following table summarizes restricted stock activity during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em>:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Weighted-</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Average</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Grant Date</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Restricted</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Stock</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Per Share</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at December 31, 2020</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">307,199</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">98.87</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Granted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">178,398</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">133.67</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Restrictions lapsed</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(113,315</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">91.10</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Forfeited</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(14,525</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">105.72</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Restricted stock at June 30, 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">357,757</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">118.41</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">As of <em style="font: inherit;"> June 30, 2021</em>, there was $36.0 million of unrecognized compensation expense related to non-vested restricted stock, which is expected to be recognized over a weighted-average period of 2.8&#160;years.&#160;</p>
   <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Performance Stock </b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Performance stock units (PSUs) are expressed in terms of a target number of PSUs, with anywhere between <span style="-sec-ix-hidden:c75344006">0</span> percent&#160;and 150 percent&#160;of that target number capable of being earned and vesting at the end of a <span style="-sec-ix-hidden:c75344008">three</span>-year performance period depending on the Company&#8217;s performance in the final year of the performance period and the award recipient&#8217;s continued employment. The Company&#8217;s PSUs granted from <em style="font: inherit;">2017</em> to <em style="font: inherit;">2019</em> and certain PSUs granted in <em style="font: inherit;">2021</em> are based on performance conditions and the related compensation cost is based on the probability that the performance conditions will be achieved. The Company&#8217;s PSUs granted in <em style="font: inherit;">2020</em> and certain PSUs granted in <em style="font: inherit;">2021</em>&#160;are based on market conditions and the related compensation cost is based on the fair value at grant date calculated using a Monte Carlo pricing model.</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following table summarizes performance stock activity during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em>:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Weighted-</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Average</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Grant Date</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Performance</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Stock</em></b></p> </td><td style="padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Per Share</em></b></p> </td><td style="padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at December 31, 2020</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">19,956</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">118.66</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Granted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">15,078</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">203.64</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="margin: 0px; padding-left: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-indent: -9pt;">Restrictions lapsed</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="margin: 0px; padding-left: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-indent: -9pt;">Performance change</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="margin: 0px; padding-left: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin: 0pt 0pt 0pt 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-indent: -18pt;">Forfeited</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(4,184</td><td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">99.59</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Performance stock at June 30, 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">30,850</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">160.19</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin: 0pt 7.2pt; text-align: left; text-indent: -9pt;">The following table provides the assumptions used in the Monte Carlo pricing model valuation of PSUs during the <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;">2020</em>:&#160;</p>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#160;</p>
   <hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 6pt auto 0pt auto;"/>
   <p style="font-family: 'Times New Roman', Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">0.22</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">1.41</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected life (years)</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">2.87</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">2.88</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">51.40</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">38.70</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr class="hr-custom" style="text-align: center;height: 1px; color: #000000; background-color: #000000; width: 95%; border: none; margin: 0pt auto 0pt auto;"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">As of <em style="font: inherit;"> June 30, 2021</em>, there was $3.2 million of unrecognized compensation expense related to non-vested performance stock, which is expected to be recognized over a weighted-average period of 2.4&#160;years.&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Employee Stock Purchase Plan</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The following table presents the assumptions used to estimate the fair value of the ESPP during the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;">2020</em>:&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr style="vertical-align: bottom;"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><b><b>Six Months Ended June 30,</b></b></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="vertical-align: bottom;"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><b><b>2021</b></b></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><b><b>2020</b></b></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: Times New Roman; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">0.06 - 0.12%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">0.17 - 1.59%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected life (months)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">6.00</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">6.00</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">50.85 - 65.53%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">42.63 - 59.99%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">0%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">0%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -URI http://asc.fasb.org/topic&amp;trid=2228938<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>26
<FILENAME>R16.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485867998968">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 10 - Accumulated Other Comprehensive Income (Loss)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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="top.Show.showAR( this, 'defref_us-gaap_DisclosureOfReclassificationAmountTextBlock', window );">Disclosure of Reclassification Amount [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;<b>Note <em style="font: inherit;">10</em> &#8211; Accumulated Other Comprehensive Income (Loss)</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Other comprehensive income (loss) is comprised of foreign currency translation adjustments and net unrealized gains (losses) on investments in securities. The following table presents the changes in accumulated other comprehensive income (loss) balances during the&#160;<em style="font: inherit;">three</em> and <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;">2020</em>:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 0pt;">Balance at beginning of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(10,096</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(9,998</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(3,420</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(7,018</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-indent: 9pt;"><i>Foreign currency translation adjustments</i></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;">Other comprehensive income (loss) before reclassifications</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">2,030</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">364</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(4,812</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(2,616</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: 9pt;">Amounts reclassified from accumulated other comprehensive loss</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: 9pt;">Net current-period other comprehensive income (loss)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,030</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">364</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(4,812</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(2,616</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-indent: 9pt;"><i>Net unrealized gains (losses) on investments in securities</i></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;">Other comprehensive income (loss) before reclassifications</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(49</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">117</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: 9pt;">Amounts reclassified from accumulated other comprehensive loss</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: 9pt;">Net current-period other comprehensive income (loss)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(49</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">117</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Balance at end of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(8,115</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(9,634</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(8,115</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(9,634</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
      </tr>

     </tbody>
    </table>

   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureOfReclassificationAmountTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for any adjustments made during the period to avoid double counting in comprehensive income items displayed as part of net income that also had been displayed as part of other comprehensive income in that period or earlier periods. These adjustments include reclassifications to net income of items in accumulated comprehensive income, such as deferred gains or losses on qualifying hedges when hedged item reported in net income, holding gains or losses on available-for-sale securities transferred into trading category, unrealized holding gains or losses on debt securities transferred from held-to-maturity category into available-for-sale category and accumulated translation adjustment attributable to foreign subsidiary or investment in foreign entity upon sale or liquidation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -URI http://asc.fasb.org/topic&amp;trid=2134417<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisclosureOfReclassificationAmountTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>27
<FILENAME>R17.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485861610760">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 11 - Income Taxes<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxDisclosureTextBlock', window );">Income Tax Disclosure [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">11</em> &#8211; Income Taxes</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company is subject to income tax in multiple jurisdictions and the use of estimates is required to determine the provision for income taxes. For the <em style="font: inherit;">three</em> months ended&#160;<em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;">2020</em>, the Company recorded an income tax provision of $3.3 million and $2.5&#160;million, respectively.&#160;The income tax provision is based on the estimated annual effective tax rate for the year applied to pre-tax income. The results for the <em style="font: inherit;">three</em> and <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021 </em>reflect losses in jurisdictions that are <em style="font: inherit;">not</em> eligible for tax benefits on account of valuation allowances. The effective income tax rate for the <em style="font: inherit;">three</em> months ended&#160;<em style="font: inherit;"> June 30, 2021</em> was 20.5 percent compared to 16.6&#160;percent in the same period of the prior year. The effective tax rate increased by 3.9 percent&#160;for the <em style="font: inherit;">three</em> months ended&#160;<em style="font: inherit;"> June 30, 2021</em> when compared to the same period in&#160;<em style="font: inherit;">2020</em>, primarily due to a decrease in tax benefits from the vesting of restricted stock and the exercise of stock options. The effective income tax rate for the <em style="font: inherit;">six</em>&#160;months ended&#160;<em style="font: inherit;"> June 30, 2021</em> was 17.6 percent compared to 19.4&#160;percent in the same period of the prior year. The effective tax rate decreased by 1.8 percent&#160;for the <em style="font: inherit;">six</em>&#160;months ended&#160;<em style="font: inherit;"> June 30, 2021</em> when compared to the same period in&#160;<em style="font: inherit;">2020</em>, primarily due to an increase in tax benefits from the vesting of restricted stock and the exercise of stock options.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The effective income tax rate for the&#160;<em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> differs from the U.S. federal statutory rate of 21.0 percent due to various factors, including operating in multiple state and foreign jurisdictions and tax credits for which the Company qualifies.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company had unrecognized tax benefits totaling $5.0 million as of <em style="font: inherit;"> June 30, 2021</em> and $4.8&#160;million as of&#160;<em style="font: inherit;"> December 31, 2020</em>, respectively, all of which, if recognized, would affect the Company&#8217;s effective tax rate. The Company recognizes interest and penalties related to income tax matters in income tax expense, and reports the liability in current or long-term income taxes payable as appropriate.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt;">On <em style="font: inherit;"> March 11, 2021, </em>the President signed into law the ARP Act, a legislative package which is generally <em style="font: inherit;">not</em> significant to the Company's current tax footprint; however, the Company will continue to assess the ARP Act on an ongoing basis. Similar tax provisions and other stimulus measures have been granted either before or after <em style="font: inherit;"> June 30, 2021 </em>by certain foreign and U.S. state jurisdictions, which the Company continues to evaluate and apply, if applicable.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_IncomeTaxDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for income taxes. Disclosures may include net deferred tax liability or asset recognized in an enterprise's statement of financial position, net change during the year in the total valuation allowance, approximate tax effect of each type of temporary difference and carryforward that gives rise to a significant portion of deferred tax liabilities and deferred tax assets, utilization of a tax carryback, and tax uncertainties information.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 21<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32857-109319<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 11.C)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330215-122817<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 17<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32809-109319<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.5.Q1)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 14<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32705-109319<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 270<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6424409&amp;loc=d3e44925-109338<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -URI http://asc.fasb.org/topic&amp;trid=2144680<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6424122&amp;loc=d3e41874-109331<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_IncomeTaxDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>XML
<SEQUENCE>28
<FILENAME>R18.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485867872584">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Segment Reporting<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureTextBlockAbstract', window );"><strong>Notes to Financial Statements</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="top.Show.showAR( this, 'defref_us-gaap_SegmentReportingDisclosureTextBlock', window );">Segment Reporting Disclosure [Text Block]</a></td>
<td class="text">
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>Note <em style="font: inherit;">12</em> &#8211; Segment Reporting</b></p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">The Company&#8217;s reportable segments are based on the internal reporting used by the Company&#8217;s Chief Executive Officer, who is the chief operating decision maker (CODM), to assess operating performance and make decisions about the allocation of resources. The Corporate Unallocated and Japan category includes non-reportable segments, as well as research and development and general and administrative costs that the Company does <em style="font: inherit;">not</em> allocate directly to its operating segments.</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Intercompany transactions primarily relate to intercontinental activity and have been eliminated and are excluded from the reported amounts. The difference between income from operations and pre-tax income relates to foreign currency-related gains and losses and interest income on cash balances and investments, which are <em style="font: inherit;">not</em> allocated to business segments.&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Revenue and income from operations by reportable segment&#160;for the&#160;<em style="font: inherit;">three</em> and <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> and&#160;<em style="font: inherit;">2020</em> were&#160;as follows:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Revenue:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">United States</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">95,344</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">86,823</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">186,397</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">176,899</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Europe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">24,655</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">16,729</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">46,104</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">37,516</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Japan</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">3,049</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">3,023</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">6,673</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">7,268</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Total revenue</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">123,048</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">106,575</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">239,174</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">221,683</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 3pt 0px; border: currentColor; border-image: none; width: 100%; height: 1px; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 48%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Income from Operations:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">United States</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">26,280</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">24,349</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">48,783</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">49,438</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Europe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">5,063</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">2,261</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">3,692</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">6,625</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Corporate Unallocated and Japan</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(15,239</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(12,259</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(32,110</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(24,887</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Total Income from Operations</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">16,104</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">14,351</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">20,365</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">31,176</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 95%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Total long-lived assets&#160;at&#160;<em style="font: inherit;"> June 30, 2021</em> and <em style="font: inherit;"> December 31, 2020</em>&#160;were as follows:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">June 30,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">December 31,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 62%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Total long-lived assets:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">United States</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">222,117</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">215,721</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Europe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">60,140</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">59,388</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Japan</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">6,238</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">7,557</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt;">Total Long-lived Assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">288,495</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">282,666</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="margin: 0px auto; border: currentColor; border-image: none; width: 80%; height: 1px; text-align: center; color: rgb(0, 0, 0); background-color: rgb(0, 0, 0);"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">Revenue by product line for the&#160;<em style="font: inherit;">three</em> and <em style="font: inherit;">six</em> months ended <em style="font: inherit;"> June 30, 2021</em> and&#160;<em style="font: inherit;">2020</em> were&#160;as follows:</p>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr class="hr-custom" style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/>
   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Revenue:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Injection Molding</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">58,168</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">57,894</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">114,527</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">112,670</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">CNC Machining</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">41,592</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">28,760</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">78,295</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">66,645</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">3D Printing</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">18,170</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">14,236</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">35,405</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">30,184</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Sheet Metal</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">4,717</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">4,669</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">9,936</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">10,318</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Other Revenue</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">401</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">1,016</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">1,011</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">1,866</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Total revenue</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">123,048</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">106,575</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">239,174</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">221,683</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>

   <p style="margin: 0pt; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</p>
   <hr style="height: 1px; color: #000000; background-color: #000000; width: 100%; border: none; margin: 3pt 0"/>
   <p style="font-family:'Times New Roman', Times, serif;font-size:10pt;margin:0pt;text-align:left;">&#160;</p>
  <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureTextBlockAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisclosureTextBlockAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_SegmentReportingDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for reporting segments including data and tables. Reportable segments include those that meet any of the following quantitative thresholds a) it's reported revenue, including sales to external customers and intersegment sales or transfers is 10 percent or more of the combined revenue, internal and external, of all operating segments b) the absolute amount of its reported profit or loss is 10 percent or more of the greater, in absolute amount of 1) the combined reported profit of all operating segments that did not report a loss or 2) the combined reported loss of all operating segments that did report a loss c) its assets are 10 percent or more of the combined assets of all operating segments.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 34<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8981-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 21<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8721-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 40<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9031-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 26<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8844-108599<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9038-108599<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 42<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9054-108599<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8657-108599<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 21<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8721-108599<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -URI http://asc.fasb.org/topic&amp;trid=2134510<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_SegmentReportingDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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>XML
<SEQUENCE>29
<FILENAME>R19.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485867939848">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Net Income Per Common Share (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock', window );">Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 48%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">(in thousands, except share and per share amounts)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Net income</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">12,915</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">12,607</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">16,627</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">26,591</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Basic - weighted-average shares outstanding:</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">27,735,732</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">26,660,498</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">27,600,684</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">26,718,652</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Effect of dilutive securities:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Employee stock options and other</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">9,138</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">100,368</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">140,780</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">119,286</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Diluted - weighted-average shares outstanding:</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">27,744,870</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">26,760,866</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">27,741,464</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">26,837,938</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Net income per share:</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Basic</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">0.47</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">0.47</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">0.60</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">1.00</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 18pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Diluted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">0.47</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">0.47</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">0.60</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">0.99</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>30
<FILENAME>R20.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485863567208">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Business Combinations (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember', window );">Acquired 3D Hubs [Member]</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="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock', window );">Schedule of Recognized Identified Assets Acquired and Liabilities Assumed [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; width: 84%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><b><em style="font: inherit;">Acquisition</em></b></td><td style="font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Assets acquired:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Current assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">2,497</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Intangible assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">30,770</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Goodwill</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">281,845</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Other long-term assets</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">1,139</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total assets acquired</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">316,251</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;"><b>Liabilities assumed:</b></p> </td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt">Current contingent consideration</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt">7,093</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Current liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">5,666</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt">Long-term contingent consideration</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt">6,507</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Long-term deferred tax liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">2,608</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Other long-term liabilities</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">255</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total liabilities assumed</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">22,129</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net assets acquired</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">294,122</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Cash paid</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">133,847</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Cash acquired</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(6,434</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Net cash consideration</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">127,413</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Equity portion of purchase price</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">166,709</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt; margin-left: 18pt;">Total purchase consideration</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 13%; text-align: right; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">294,122</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the amounts recognized as of the acquisition date for each major class of assets acquired and liabilities assumed. May include but not limited to the following: (a) acquired receivables; (b) contingencies recognized at the acquisition date; and (c) the fair value of noncontrolling interests in the acquiree.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123413009&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>31
<FILENAME>R21.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485861592360">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Goodwill and Other Intangible Assets (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfGoodwillTextBlock', window );">Schedule of Goodwill [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 5%; margin-left: 5%; width: 90%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 83%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"><b><em style="font: inherit;">Six Months Ended June 30, 2021</em></b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Balance as of the beginning of the period</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">128,752</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Goodwill acquired during the period</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">281,845</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt">Foreign currency translation adjustments</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">(3,406</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: thin solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Balance as of the end of the period</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">407,191</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock', window );">Schedule of Finite-Lived Intangible Assets [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="10" style="width: 19%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">June 30, 2021</em></em></em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="10" style="width: 19%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2020</em></em></em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Useful</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="1" rowspan="1" style="padding: 0px; width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Weighted Average</em></b></p> </td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Gross</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Accumulated Amortization</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Net</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Gross</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Accumulated Amortization</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="width: 1%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Net</em></b></p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Life (in years)</em></b></p> </td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="1" rowspan="1" style="padding: 0px; width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: thin solid rgb(0, 0, 0);"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Useful Life Remaining (in years)</em></b></p> </td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="text-indent: -9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 9pt;">Intangible assets with finite lives:</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 5%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 7%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 5%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 5%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 7%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 5%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 7%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 14%; text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Marketing assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$930</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$(667</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$263</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$930</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$(620</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">$310</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">10.0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2.8</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Non-compete agreement</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">853</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(297</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">556</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">270</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(238</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">32</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2.0 - 5.0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3.3</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Software technology</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">13,229</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(4,330</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">8,899</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">13,229</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(3,645</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">9,584</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">10.0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">7.0</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Software platform</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">27,170</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(1,089</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">26,081</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">10.0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">9.6</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Tradenames</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">365</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">(51</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">314</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3.0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2.6</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Customer relationships</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">12,292</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">(6,731</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">5,561</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">10,070</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">(5,646</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right;">&#160;</td><td colspan="2" style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; text-align: right; border-bottom: thin solid rgb(0, 0, 0);">4,424</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" style="width: 7%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">3.0 - 9.0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td colspan="1" rowspan="1" style="width: 14%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">2.3</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 24%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total intangible assets</p> </td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 5%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">54,839</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">&#160;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 7%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">(13,165</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 5%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">41,674</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">&#160;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 5%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">24,499</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">&#160;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 7%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">(10,149</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-align: right;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">$</td><td style="width: 5%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0); text-align: right;">14,350</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="width: 1%; padding-bottom: 3px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock', window );">Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 83%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="padding: 0px; width: 0%; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Estimated Amortization Expense</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Remaining 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,130</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">2022</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">6,259</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">2023</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">6,056</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">2024</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,832</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">2025</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">3,750</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Thereafter</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">18,647</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total estimated amortization expense</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 14%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">41,674</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of assets, excluding financial assets and goodwill, lacking physical substance with a finite life, by either major class or business segment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16265-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleOfGoodwillTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of goodwill by reportable segment and in total which includes a rollforward schedule.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13816-109267<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13854-109267<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ScheduleOfGoodwillTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the amount of amortization expense expected to be recorded in succeeding fiscal years for finite-lived intangible assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>32
<FILENAME>R22.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485863473672">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 6 - Fair Value Measurements (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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="top.Show.showAR( this, 'defref_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock', window );">Fair Value, Assets Measured on Recurring Basis [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">June 30, 2021</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="10" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2020</em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 40%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 1</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 2</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 3</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 1</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 2</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Level 3</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Financial Assets:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Cash and cash equivalents</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">40,694</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">72,225</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Money market mutual fund</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">1,215</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">55,378</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 9pt;">Marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">17,951</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">29,090</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">59,860</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">29,090</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">127,603</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt"><b>Financial Liabilities:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-indent: 9pt;"> <p style="margin-top: 0pt; margin-bottom: 0pt">Contingent consideration</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">5,629</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt"> <p style="margin-top: 0pt; margin-bottom: 0pt">Total</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">5,629</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 3px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 7%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0);">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of assets, including [financial] instruments measured at fair value that are classified in stockholders' equity, if any, by class that are measured at fair value on a recurring basis. The disclosures contemplated herein include the fair value measurements at the reporting date by the level within the fair value hierarchy in which the fair value measurements in their entirety fall, segregating fair value measurements using quoted prices in active markets for identical assets (Level 1), significant other observable inputs (Level 2), and significant unobservable inputs (Level 3).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123874694&amp;loc=d3e19207-110258<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123874694&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>33
<FILENAME>R23.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485953683672">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 7 - Marketable Securities (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock', window );">Debt Securities, Available-for-sale [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">June 30, 2021</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 56%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Cost</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Unrealized Gains</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Unrealized Losses</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">U.S. municipal securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">20,968</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">43</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(17</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">20,994</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Corporate debt securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">19,062</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">68</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(29</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">19,101</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">U.S. government agency securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">1,500</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(2</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">1,498</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Certificates of deposit/time deposits</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">5,394</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">54</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">5,448</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">46,924</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">165</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(48</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">47,041</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td></tr>
</tbody></table>

    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 90%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 5%; margin-left: 5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="14" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;"><em style="font: inherit;">December 31, 2020</em></em></em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 56%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Cost</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Unrealized Gains</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Unrealized Losses</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. municipal securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">25,003</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">83</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(2</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">25,084</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Corporate debt securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">42,048</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">211</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(11</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">42,248</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">U.S. government agency securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">18,500</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">6</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">(10</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">18,496</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Certificates of deposit/time deposits</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,395</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">93</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">5,488</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Commercial paper</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">2,499</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">2,499</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">93,445</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">393</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">(23</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 8%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">93,815</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock', window );">Investments Classified by Contractual Maturity Date [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">June 30,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 85%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Due in one year or less</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">18,341</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Due after one year through five years</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">28,700</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Total marketable securities</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">47,041</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -URI http://asc.fasb.org/topic&amp;trid=2196928<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of maturities of an entity's investments as well as any other information pertinent to the investments.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>34
<FILENAME>R24.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485863619032">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 8 - Inventory (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfInventoryCurrentTableTextBlock', window );">Schedule of Inventory, Current [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 977px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">June 30,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">December 31,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 977px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 13px;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 977px; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Total inventory</p> </td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">9,395</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">11,122</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 977px; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Allowance for obsolescence</p> </td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(284</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(260</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 977px;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Inventory, net of allowance</p> </td><td style="width: 13px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">9,111</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 12%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">10,862</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfInventoryCurrentTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the carrying amount as of the balance sheet date of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(c))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(b))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6361739&amp;loc=d3e7789-107766<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ScheduleOfInventoryCurrentTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>35
<FILENAME>R25.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485867868344">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Stock-based Compensation (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock', window );">Share-based Payment Arrangement, Option, Activity [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Weighted-</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Average</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Stock Options</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Exercise Price</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Options outstanding at December 31, 2020</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">229,531</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">86.46</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Granted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">57,901</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">128.14</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Exercised</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(28,991</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">58.78</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Forfeited</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">(8,547</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: thin solid rgb(0, 0, 0);">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">101.65</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Options outstanding at June 30, 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">249,894</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">98.81</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td><td>&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Exercisable at June 30, 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">116,452</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">81.38</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock', window );">Schedule of Share-based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]</a></td>
<td class="text">
    <table cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;, Times, serif; text-indent: 0px;"><tbody><tr style="vertical-align: bottom; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 17%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><b>Six Months Ended June 30,</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="vertical-align: bottom; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><b>2021</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 1%;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0); width: 1%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; text-align: center; margin: 0pt;"><b><b>2020</b></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding-bottom: 1px; width: 1%;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0.80 - 1.12%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0.50 - 1.47%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected life (years)</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">6.25</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">6.25</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">45.28 - 45.53%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">42.40 - 43.83%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255); font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; text-align: center;">0%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock', window );">Share-based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Weighted-</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Average</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Grant Date</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Restricted</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Stock</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Per Share</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Restricted stock at December 31, 2020</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">307,199</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">98.87</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Granted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">178,398</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">133.67</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Restrictions lapsed</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">(113,315</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">91.10</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Forfeited</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(14,525</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">105.72</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Restricted stock at June 30, 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">357,757</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">118.41</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock', window );">Schedule of Nonvested Performance-based Units Activity [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 95%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 2.5%; margin-left: 2.5%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Weighted-</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Average</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><em style="font: inherit;">&#160;</em></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Grant Date</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Performance</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Fair Value</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Stock</em></b></p> </td><td style="padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">Per Share</em></b></p> </td><td style="padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="width: 68%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">Performance stock at December 31, 2020</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">19,956</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">118.66</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Granted</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">15,078</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">203.64</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="margin: 0px; padding-left: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-indent: -9pt;">Restrictions lapsed</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="margin: 0px; padding-left: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin: 0pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-indent: -9pt;">Performance change</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">-</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="margin: 0px; padding-left: 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="margin: 0pt 0pt 0pt 9pt; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; text-indent: -18pt;">Forfeited</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">(4,184</td><td style="padding: 0px; width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: thin; border-bottom-style: solid;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">99.59</td><td style="width: 1%; padding-bottom: 1px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Performance stock at June 30, 2021</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">30,850</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 3px double black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 13%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">160.19</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock', window );">Schedule of Share-based Payment Award, Awards Other Than Stock Options, Valuation Assumptions [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; width: 68%;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">0.22</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">1.41</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected life (years)</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">2.87</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">2.88</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">51.40</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">38.70</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">%</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; text-align: center;">0</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;">%</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock', window );">Schedule of Share-based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: Times New Roman; text-indent: 0px;"><tbody><tr style="vertical-align: bottom;"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><b><b>Six Months Ended June 30,</b></b></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="vertical-align: bottom;"><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><b><b>2021</b></b></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td><td style="font-family: Times New Roman; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><b><b>2020</b></b></b></p> </td><td style="font-family: Times New Roman; font-size: 10pt; padding-bottom: 1px;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: Times New Roman; font-size: 10pt; width: 68%;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Risk-free interest rate</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">0.06 - 0.12%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">0.17 - 1.59%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected life (months)</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">6.00</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">6.00</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(204, 238, 255);"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected volatility</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">50.85 - 65.53%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">42.63 - 59.99%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
<tr style="vertical-align: bottom; background-color: rgb(255, 255, 255);"><td style="font-family: Times New Roman; font-size: 10pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin-top: 0pt; margin-bottom: 0pt;">Expected dividend yield</p> </td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">0%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt;">&#160;</td><td style="width: 13%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt; text-align: center;">0%</td><td style="width: 1%; font-family: Times New Roman; font-size: 10pt; margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the valuation assumptions of share-based payment awards other than stock options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the changes in outstanding nonvested performance-based units.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the significant assumptions used during the year to estimate the fair value of employee stock purchase plans, including, but not limited to: (a) expected term, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the significant assumptions used during the year to estimate the fair value of stock options, including, but not limited to: (a) expected term of share options and similar instruments, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of the number and weighted-average grant date fair value for restricted stock and restricted stock units that were outstanding at the beginning and end of the year, and the number of restricted stock and restricted stock units that were granted, vested, or forfeited during the year.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>36
<FILENAME>R26.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485949925736">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 10 - Accumulated Other Comprehensive Income (Loss) (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</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="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock', window );">Comprehensive Income (Loss) [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;">
     <tbody>
      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">June 30,</em></em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(in thousands)</p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 0pt;">Balance at beginning of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(10,096</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(9,998</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(3,420</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(7,018</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-indent: 9pt;"><i>Foreign currency translation adjustments</i></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;">Other comprehensive income (loss) before reclassifications</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">2,030</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">364</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(4,812</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(2,616</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: 9pt;">Amounts reclassified from accumulated other comprehensive loss</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: 9pt;">Net current-period other comprehensive income (loss)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">2,030</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">364</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(4,812</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(2,616</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">)</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: Times New Roman; font-size: 10pt; font-variant: normal; margin: 0pt; text-indent: 9pt;"><i>Net unrealized gains (losses) on investments in securities</i></p> </td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><i>&#160;</i></td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt; text-indent: 27pt;">Other comprehensive income (loss) before reclassifications</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">(49</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">117</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 18pt; text-indent: 9pt;">Amounts reclassified from accumulated other comprehensive loss</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
      </tr>

      <tr style="background-color: rgb(255, 255, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 9pt; text-indent: 9pt;">Net current-period other comprehensive income (loss)</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">(49</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">117</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0); margin-left: 0pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">-</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td>
      </tr>

      <tr style="background-color: rgb(204, 238, 255); vertical-align: bottom">
       <td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Balance at end of period</p> </td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(8,115</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(9,634</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(8,115</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td>
       <td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">(9,634</td>
       <td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">)</td>
      </tr>

     </tbody>
    </table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of components of comprehensive income (loss). Includes, but is not limited to, foreign currency translation adjustments, foreign currency transactions  designated as economic hedges of a net investment in foreign entity, gain (loss) and prior service cost (credit) for pension plans and other postretirement benefit plans.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e526-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>37
<FILENAME>R27.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485947993000">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Segment Reporting (Tables)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th"><div>Jun. 30, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_IncomeFromOperationsByGeographicAreaTableTextBlock', window );">Income from Operations by Geographic Area [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="margin-right: 2.5%; margin-left: 2.5%; width: 95%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 48%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Income from Operations:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">United States</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">26,280</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">24,349</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">48,783</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">49,438</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Europe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">5,063</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">2,261</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">3,692</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">6,625</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Corporate Unallocated and Japan</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(15,239</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(12,259</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(32,110</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">(24,887</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">)</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Total Income from Operations</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">16,104</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">14,351</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">20,365</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 10%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">31,176</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock', window );">Long-lived Assets by Geographic Areas [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 80%; text-indent: 0px; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-right: 10%; margin-left: 10%;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">June 30,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">December 31,</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="width: 62%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;"> <p style="margin: 0pt; text-align: center; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 1px; border-bottom-style: solid;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt;"><b>Total long-lived assets:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="text-align: left; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">United States</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">222,117</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">215,721</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Europe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">60,140</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">59,388</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Japan</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">6,238</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">7,557</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;"> <p style="font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-top: 0pt; margin-bottom: 0pt; margin-left: 27pt;">Total Long-lived Assets</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">288,495</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">$</td><td style="width: 16%; text-align: right; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">282,666</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;, Times, serif; font-size: 10pt; margin-left: 0pt; border-bottom-color: rgb(0, 0, 0); border-bottom-width: 3px; border-bottom-style: double;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueTableTextBlock', window );">Disaggregation of Revenue [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Revenue:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Injection Molding</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">58,168</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">57,894</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">114,527</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">112,670</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">CNC Machining</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">41,592</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">28,760</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">78,295</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">66,645</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">3D Printing</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">18,170</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">14,236</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">35,405</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">30,184</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Sheet Metal</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">4,717</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">4,669</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">9,936</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">10,318</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Other Revenue</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">401</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">1,016</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">1,011</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">1,866</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">Total revenue</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">123,048</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">106,575</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">239,174</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">221,683</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member]</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="top.Show.showAR( this, 'defref_us-gaap_TableTextBlock', window );"><strong>Notes Tables</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock', window );">Revenue from External Customers by Geographic Areas [Table Text Block]</a></td>
<td class="text">
    <table border="0" cellpadding="0" cellspacing="0" class="finTable" style="width: 100%; font-size: 10pt; font-family: &quot;Times New Roman&quot;; text-indent: 0px;"><tbody><tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Three Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="6" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;"><em style="font: inherit;">Six Months Ended June 30,</em></em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; width: 52%;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;">(in thousands)</p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2021</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td colspan="2" style="text-align: center; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 1px solid rgb(0, 0, 0);"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;text-align:center;margin:0pt;"><b><em style="font: inherit;">2020</em></b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 1px solid rgb(0, 0, 0);">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family:Times New Roman;font-size:10pt;font-variant:normal;margin:0pt;"><b>Revenue:</b></p> </td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt;"><b>&#160;</b></td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">United States</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">95,344</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">86,823</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">186,397</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">176,899</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Europe</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">24,655</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">16,729</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">46,104</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">37,516</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td></tr>
<tr style="background-color: rgb(255, 255, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0"> <p style="margin-top: 0pt; margin-bottom: 0pt">Japan</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">3,049</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">3,023</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">6,673</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0; margin: 0">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">7,268</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; padding: 0px; margin: 0px; border-bottom: 1px solid black;">&#160;</td></tr>
<tr style="background-color: rgb(204, 238, 255); vertical-align: bottom"><td style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt;"> <p style="font-family: &quot;Times New Roman&quot;; font-size: 10pt; font-variant: normal; margin: 0pt 0pt 0pt 27pt;">Total revenue</p> </td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">123,048</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">106,575</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">239,174</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt;">&#160;</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">$</td><td style="width: 9%; text-align: right; font-family: &quot;Times New Roman&quot;; font-size: 10pt; margin-left: 0pt; border-bottom: 3px double rgb(0, 0, 0);">221,683</td><td style="width: 1%; font-family: &quot;Times New Roman&quot;; font-size: 10pt; border-bottom: 3px double rgb(0, 0, 0); margin-left: 0pt;">&#160;</td></tr>
</tbody></table>
   <span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_IncomeFromOperationsByGeographicAreaTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of income from operations by geographic area.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_IncomeFromOperationsByGeographicAreaTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_DisaggregationOfRevenueTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130545-203045<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_DisaggregationOfRevenueTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of long-lived assets, excluding financial instruments, long-term customer relationships of a financial institution, mortgage rights, deferred policy acquisition costs, and deferred tax assets, by geographic areas located in the entity's country of domicile and foreign countries in which the entity holds assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph b<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9038-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of revenue from external customers by geographic areas attributed to the entity's country of domicile and to foreign countries from which the entity derives revenue.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph a<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9038-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</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_us-gaap_TableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_TableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>38
<FILENAME>R28.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485868686200">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 3 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details) - USD ($)<br> $ / shares in Units, $ in Thousands</strong></div></th>
<th class="th" colspan="4">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Mar. 31, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
<th class="th"><div>Mar. 31, 2020</div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 12,915<span></span>
</td>
<td class="nump">$ 3,712<span></span>
</td>
<td class="nump">$ 12,607<span></span>
</td>
<td class="nump">$ 13,984<span></span>
</td>
<td class="nump">$ 16,627<span></span>
</td>
<td class="nump">$ 26,591<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic', window );">Basic - weighted-average shares outstanding: (in shares)</a></td>
<td class="nump">27,735,732<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">26,660,498<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">27,600,684<span></span>
</td>
<td class="nump">26,718,652<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements', window );">Employee stock options and other (in shares)</a></td>
<td class="nump">9,138<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">100,368<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">140,780<span></span>
</td>
<td class="nump">119,286<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding', window );">Diluted - weighted-average shares outstanding: (in shares)</a></td>
<td class="nump">27,744,870<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">26,760,866<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">27,741,464<span></span>
</td>
<td class="nump">26,837,938<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareBasic', window );">Basic (in dollars per share)</a></td>
<td class="nump">$ 0.47<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.47<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.60<span></span>
</td>
<td class="nump">$ 1.00<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareDiluted', window );">Diluted (in dollars per share)</a></td>
<td class="nump">$ 0.47<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.47<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.60<span></span>
</td>
<td class="nump">$ 0.99<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1448-109256<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1337-109256<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 9: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e4984-109258<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e3842-109258<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22644-107794<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1252-109256<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_EarningsPerShareBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_EarningsPerShareDiluted">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e4984-109258<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22644-107794<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e3842-109258<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1252-109256<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1337-109256<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_EarningsPerShareDiluted</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of share based payment arrangements using the treasury stock method.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1707-109256<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28A<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1500-109256<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 23<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1757-109256<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL124452729-227067<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669619-108580<br><br>Reference 25: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -SubTopic 20<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=109222650&amp;loc=SL51721683-107760<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669625-108580<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 16<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1505-109256<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1448-109256<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_WeightedAverageNumberOfSharesOutstandingBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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>XML
<SEQUENCE>39
<FILENAME>R29.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485948171448">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Business Combinations (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
<th class="th" colspan="1">11 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jan. 22, 2021</div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Payments to Acquire Businesses, Net of Cash Acquired, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 127,413<span></span>
</td>
<td class="nump">$ (0)<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1', window );">Business Combination, Contingent Consideration Arrangements, Change in Amount of Contingent Consideration, Liability</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (7,763)<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember', window );">Acquired 3D Hubs [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationConsiderationTransferred1', window );">Business Combination, Consideration Transferred, Total</a></td>
<td class="nump">$ 294,122<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Payments to Acquire Businesses, Net of Cash Acquired, Total</a></td>
<td class="nump">$ 127,413<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued', window );">Business Acquisition, Equity Interest Issued or Issuable, Number of Shares (in shares)</a></td>
<td class="nump">863,995<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable', window );">Business Combination, Consideration Transferred, Equity Interests Issued and Issuable</a></td>
<td class="nump">$ 166,709<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh', window );">Business Combination, Contingent Consideration Arrangements, Range of Outcomes, Value, High</a></td>
<td class="nump">52,800<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesGross', window );">Payments to Acquire Businesses, Gross</a></td>
<td class="nump">133,847<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationContingentConsiderationLiability', window );">Business Combination, Contingent Consideration, Liability, Total</a></td>
<td class="nump">$ 13,600<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1', window );">Business Combination, Contingent Consideration Arrangements, Change in Amount of Contingent Consideration, Liability</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (7,800)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles', window );">Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Intangibles</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(3,900)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillPurchaseAccountingAdjustments', window );">Goodwill, Purchase Accounting Adjustments</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">6,400<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration', window );">Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Contingent Consideration</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,300<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities', window );">Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Deferred Tax Liabilities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(500)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid', window );">Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Cash Paid</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (300)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember', window );">Acquired 3D Hubs [Member] | Forecast [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued', window );">Business Acquisition, Equity Interest Issued or Issuable, Number of Shares (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">143,983<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable', window );">Business Combination, Consideration Transferred, Equity Interests Issued and Issuable</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 27,800<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesGross', window );">Payments to Acquire Businesses, Gross</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 25,000<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to cash paid in connection with a business combination for which the initial accounting was incomplete.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to contingent consideration in connection with a business combination for which the initial accounting was incomplete.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to deferred tax liabilities assumed in connection with a business combination for which the initial accounting was incomplete.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of shares of equity interests issued or issuable to acquire entity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_BusinessCombinationConsiderationTransferred1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6613-128477<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6578-128477<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationConsiderationTransferred1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of equity interests of the acquirer, including instruments or interests issued or issuable in consideration for the business combination.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6613-128477<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6578-128477<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in the value of a contingent consideration liability, including, but not limited to, differences arising upon settlement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e7008-128479<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>For contingent consideration arrangements recognized in connection with a business combination, this element represents an estimate of the high-end of the potential range (undiscounted) of the consideration which may be paid.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationContingentConsiderationLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liability recognized arising from contingent consideration in a business combination.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 35<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=116859824&amp;loc=d3e6819-128478<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 25<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=6911189&amp;loc=d3e6408-128476<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationContingentConsiderationLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to intangibles acquired in connection with a business combination for which the initial accounting was incomplete.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4A<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123413009&amp;loc=SL65897772-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_GoodwillPurchaseAccountingAdjustments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) from adjustments after acquisition date under purchase accounting of an asset representing the future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 25<br> -Paragraph 16<br> -URI http://asc.fasb.org/extlink&amp;oid=123586518&amp;loc=d3e961-128460<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (g)<br> -URI http://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13816-109267<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_GoodwillPurchaseAccountingAdjustments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_PaymentsToAcquireBusinessesGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of business during the period. The cash portion only of the acquisition price.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PaymentsToAcquireBusinessesGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementScenarioAxis=srt_ScenarioForecastMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementScenarioAxis=srt_ScenarioForecastMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>40
<FILENAME>R30.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485868739384">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 4 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="2">6 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Jan. 22, 2021</div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract', window );"><strong>Assets acquired:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 407,191<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 128,752<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract', window );"><strong>Liabilities assumed:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Net cash consideration</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 127,413<span></span>
</td>
<td class="nump">$ (0)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember', window );">Acquired 3D Hubs [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract', window );"><strong>Assets acquired:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets', window );">Current assets</a></td>
<td class="nump">$ 2,497<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets', window );">Intangible assets</a></td>
<td class="nump">30,770<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="nump">281,845<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets', window );">Other long-term assets</a></td>
<td class="nump">1,139<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal', window );">Total assets acquired</a></td>
<td class="nump">316,251<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract', window );"><strong>Liabilities assumed:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent', window );">Current contingent consideration</a></td>
<td class="nump">7,093<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities', window );">Current liabilities</a></td>
<td class="nump">5,666<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent', window );">Long-term contingent consideration</a></td>
<td class="nump">6,507<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities', window );">Long-term deferred tax liabilities</a></td>
<td class="nump">2,608<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities', window );">Other long-term liabilities</a></td>
<td class="nump">255<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities', window );">Total liabilities assumed</a></td>
<td class="nump">22,129<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet', window );">Net assets acquired</a></td>
<td class="nump">294,122<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesGross', window );">Payments to Acquire Businesses, Gross</a></td>
<td class="nump">133,847<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAcquiredFromAcquisition', window );">Cash acquired</a></td>
<td class="num">(6,434)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Net cash consideration</a></td>
<td class="nump">127,413<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable', window );">Business Combination, Consideration Transferred, Equity Interests Issued and Issuable</a></td>
<td class="nump">166,709<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationConsiderationTransferred1', window );">Total purchase consideration</a></td>
<td class="nump">$ 294,122<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of liability arising from an inherited contingency (as defined) which has been recognized as of the acquisition date, classified as current</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of liability arising from an inherited contingency (as defined) which has been recognized as of the acquisition date, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of assets acquired including goodwill at the acquisition date</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationConsiderationTransferred1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6613-128477<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6578-128477<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationConsiderationTransferred1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of equity interests of the acquirer, including instruments or interests issued or issuable in consideration for the business combination.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6613-128477<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6578-128477<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer, acquired at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123413009&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities due within one year or within the normal operating cycle, if longer, assumed at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123413009&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax liability attributable to taxable temporary differences assumed at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123413009&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of assets, excluding financial assets and goodwill, that lack physical substance, having a projected indefinite period of benefit, acquired at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123413009&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities assumed at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123413009&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities due after one year or the normal operating cycle, if longer, assumed at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123413009&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of other assets expected to be realized or consumed after one year or the normal operating cycle, if longer, acquired at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123413009&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount recognized for assets, including goodwill, in excess of (less than) the aggregate liabilities assumed.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123413009&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAcquiredFromAcquisition">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash inflow associated with the acquisition of business during the period (for example, cash that was held by the acquired business).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 12<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3179-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_CashAcquiredFromAcquisition</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_Goodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(10)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=120320667&amp;loc=SL49117168-202975<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=99380562&amp;loc=d3e13770-109266<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquireBusinessesGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of business during the period. The cash portion only of the acquisition price.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PaymentsToAcquireBusinessesGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>41
<FILENAME>R31.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485948405720">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Goodwill and Other Intangible Assets (Details Textual)<br> $ in Thousands, &#8364; in Millions</strong></div></th>
<th class="th" colspan="2"></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr>
<th class="th">
<div>Jan. 22, 2021 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Jan. 22, 2021 </div>
<div>EUR (&#8364;)</div>
</th>
<th class="th">
<div>Jun. 30, 2021 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Jun. 30, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Jun. 30, 2021 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Jun. 30, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAcquiredDuringPeriod', window );">Goodwill, Acquired During Period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 281,845<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss', window );">Finite Lived Intangible Assets, Foreign Currency Translation Gain (Loss)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AmortizationOfIntangibleAssets', window );">Amortization of Intangible Assets, Total</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,500<span></span>
</td>
<td class="nump">$ 800<span></span>
</td>
<td class="nump">3,000<span></span>
</td>
<td class="nump">$ 1,500<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember', window );">Acquired 3D Hubs [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAcquiredDuringPeriod', window );">Goodwill, Acquired During Period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">281,800<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_FinitelivedIntangibleAssetsAcquired1', window );">Finite-lived Intangible Assets Acquired</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">30,800<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss', window );">Finite Lived Intangible Assets, Foreign Currency Translation Gain (Loss)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (400)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember', window );">Acquired 3D Hubs [Member] | Europe [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAcquiredDuringPeriod', window );">Goodwill, Acquired During Period | &#8364;</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#8364; 106.5<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_FinitelivedIntangibleAssetsAcquired1', window );">Finite-lived Intangible Assets Acquired | &#8364;</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#8364; 11.6<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember', window );">Acquired 3D Hubs [Member] | UNITED STATES</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_GoodwillAcquiredDuringPeriod', window );">Goodwill, Acquired During Period</a></td>
<td class="nump">$ 152,200<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinitelivedIntangibleAssetsAcquired1', window );">Finite-lived Intangible Assets Acquired</a></td>
<td class="nump">$ 16,600<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AmortizationOfIntangibleAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate expense charged against earnings to allocate the cost of intangible assets (nonphysical assets not used in production) in a systematic and rational manner to the periods expected to benefit from such assets. As a noncash expense, this element is added back to net income when calculating cash provided by or used in operations using the indirect method.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=6388964&amp;loc=d3e16225-109274<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AmortizationOfIntangibleAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of foreign currency translation gain (loss) which increases (decreases) assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_FinitelivedIntangibleAssetsAcquired1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in assets, excluding financial assets, lacking physical substance with a definite life, from an acquisition.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16265-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FinitelivedIntangibleAssetsAcquired1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_GoodwillAcquiredDuringPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized resulting from a business combination.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13816-109267<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_GoodwillAcquiredDuringPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=srt_EuropeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=srt_EuropeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_US">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_US</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>42
<FILENAME>R32.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485867461192">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Goodwill and Other Intangible Assets - Changes in the Carrying Amount of Goodwill (Details)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th">
<div>Jun. 30, 2021 </div>
<div>USD ($)</div>
</th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="nump">$ 128,752<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAcquiredDuringPeriod', window );">Goodwill acquired during the period</a></td>
<td class="nump">281,845<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillForeignCurrencyTranslationGainLoss', window );">Foreign currency translation adjustments</a></td>
<td class="num">(3,406)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="nump">$ 407,191<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(10)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=120320667&amp;loc=SL49117168-202975<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=99380562&amp;loc=d3e13770-109266<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillAcquiredDuringPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized resulting from a business combination.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13816-109267<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_GoodwillAcquiredDuringPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_GoodwillForeignCurrencyTranslationGainLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of foreign currency translation gain (loss) which increases (decreases) an asset representing future economic benefits from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13816-109267<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_GoodwillForeignCurrencyTranslationGainLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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>XML
<SEQUENCE>43
<FILENAME>R33.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485866837048">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 5 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross</a></td>
<td class="nump">$ 54,839<span></span>
</td>
<td class="nump">$ 24,499<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="num">(13,165)<span></span>
</td>
<td class="num">(10,149)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">41,674<span></span>
</td>
<td class="nump">14,350<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_MarketingRelatedIntangibleAssetsMember', window );">Marketing-Related Intangible Assets [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross</a></td>
<td class="nump">930<span></span>
</td>
<td class="nump">930<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="nump">667<span></span>
</td>
<td class="nump">620<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">$ 263<span></span>
</td>
<td class="nump">310<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">10 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1', window );">Weighted average useful life remaining (Year)</a></td>
<td class="text">2 years 9 months 18 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember', window );">Noncompete Agreements [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross</a></td>
<td class="nump">$ 853<span></span>
</td>
<td class="nump">270<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="num">(297)<span></span>
</td>
<td class="num">(238)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">$ 556<span></span>
</td>
<td class="nump">32<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1', window );">Weighted average useful life remaining (Year)</a></td>
<td class="text">3 years 3 months 18 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember', window );">Noncompete Agreements [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">2 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember', window );">Noncompete Agreements [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">5 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_ComputerSoftwareIntangibleAssetMember', window );">Computer Software, Intangible Asset [Member]</a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross</a></td>
<td class="nump">$ 13,229<span></span>
</td>
<td class="nump">13,229<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="num">(4,330)<span></span>
</td>
<td class="num">(3,645)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">$ 8,899<span></span>
</td>
<td class="nump">9,584<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">10 years<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1', window );">Weighted average useful life remaining (Year)</a></td>
<td class="text">7 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=prlb_SoftwarePlatformMember', window );">Software Platform [Member]</a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross</a></td>
<td class="nump">$ 27,170<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="num">(1,089)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">$ 26,081<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">10 years<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1', window );">Weighted average useful life remaining (Year)</a></td>
<td class="text">9 years 7 months 6 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TradeNamesMember', window );">Trade Names [Member]</a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross</a></td>
<td class="nump">$ 365<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="num">(51)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">$ 314<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">3 years<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1', window );">Weighted average useful life remaining (Year)</a></td>
<td class="text">2 years 7 months 6 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember', window );">Customer Relationships [Member]</a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross</a></td>
<td class="nump">$ 12,292<span></span>
</td>
<td class="nump">10,070<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="num">(6,731)<span></span>
</td>
<td class="num">(5,646)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net</a></td>
<td class="nump">$ 5,561<span></span>
</td>
<td class="nump">$ 4,424<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1', window );">Weighted average useful life remaining (Year)</a></td>
<td class="text">2 years 3 months 18 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember', window );">Customer Relationships [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember', window );">Customer Relationships [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Useful Life (Year)</a></td>
<td class="text">9 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Useful life of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FiniteLivedIntangibleAssetUsefulLife</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</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_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Accumulated amount of amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 928<br> -SubTopic 340<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6473545&amp;loc=d3e61844-108004<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FiniteLivedIntangibleAssetsGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 926<br> -SubTopic 20<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=120154696&amp;loc=d3e54445-107959<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FiniteLivedIntangibleAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Remaining amortization period of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 926<br> -SubTopic 20<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=120154696&amp;loc=d3e54445-107959<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</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_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_MarketingRelatedIntangibleAssetsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_MarketingRelatedIntangibleAssetsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_ComputerSoftwareIntangibleAssetMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_ComputerSoftwareIntangibleAssetMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=prlb_SoftwarePlatformMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=prlb_SoftwarePlatformMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TradeNamesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TradeNamesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_CustomerRelationshipsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>44
<FILENAME>R34.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485947987352">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 5 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear', window );">Remaining 2021</a></td>
<td class="nump">$ 3,130<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths', window );">2022</a></td>
<td class="nump">6,259<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo', window );">2023</a></td>
<td class="nump">6,056<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree', window );">2024</a></td>
<td class="nump">3,832<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour', window );">2025</a></td>
<td class="nump">3,750<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour', window );">Thereafter</a></td>
<td class="nump">18,647<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Total estimated amortization expense</a></td>
<td class="nump">$ 41,674<span></span>
</td>
<td class="nump">$ 14,350<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization for asset, excluding financial asset and goodwill, lacking physical substance with finite life expected to be recognized after fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in remainder of current fiscal year.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 926<br> -SubTopic 20<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=120154696&amp;loc=d3e54445-107959<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_FiniteLivedIntangibleAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>45
<FILENAME>R35.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485860249080">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 6 - Fair Value Measurements (Details Textual) - Acquired 3D Hubs [Member] - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1">11 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jan. 22, 2021</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesGross', window );">Payments to Acquire Businesses, Gross</a></td>
<td class="nump">$ 133,847<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued', window );">Business Acquisition, Equity Interest Issued or Issuable, Number of Shares (in shares)</a></td>
<td class="nump">863,995<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable', window );">Business Combination, Consideration Transferred, Equity Interests Issued and Issuable</a></td>
<td class="nump">$ 166,709<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember', window );">Maximum [Member] | Forecast [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesGross', window );">Payments to Acquire Businesses, Gross</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 25,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued', window );">Business Acquisition, Equity Interest Issued or Issuable, Number of Shares (in shares)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">143,983<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable', window );">Business Combination, Consideration Transferred, Equity Interests Issued and Issuable</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 27,800<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of shares of equity interests issued or issuable to acquire entity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of equity interests of the acquirer, including instruments or interests issued or issuable in consideration for the business combination.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6613-128477<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6578-128477<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_PaymentsToAcquireBusinessesGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of business during the period. The cash portion only of the acquisition price.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PaymentsToAcquireBusinessesGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=prlb_Acquired3dHubsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementScenarioAxis=srt_ScenarioForecastMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementScenarioAxis=srt_ScenarioForecastMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>46
<FILENAME>R36.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485948538472">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 6 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Marketable securities</a></td>
<td class="nump">$ 47,041<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring [Member] | Fair Value, Inputs, Level 1 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsFairValueDisclosure', window );">Cash and cash equivalents</a></td>
<td class="nump">40,694<span></span>
</td>
<td class="nump">$ 72,225<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Marketable securities</a></td>
<td class="nump">17,951<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsFairValueDisclosure', window );">Total</a></td>
<td class="nump">59,860<span></span>
</td>
<td class="nump">127,603<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationContingentConsiderationLiability', window );">Contingent consideration</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesFairValueDisclosure', window );">Total</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring [Member] | Fair Value, Inputs, Level 1 [Member] | Money Market Funds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsFairValueDisclosure', window );">Cash and cash equivalents</a></td>
<td class="nump">1,215<span></span>
</td>
<td class="nump">55,378<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring [Member] | Fair Value, Inputs, Level 2 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsFairValueDisclosure', window );">Cash and cash equivalents</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Marketable securities</a></td>
<td class="nump">29,090<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsFairValueDisclosure', window );">Total</a></td>
<td class="nump">29,090<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationContingentConsiderationLiability', window );">Contingent consideration</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesFairValueDisclosure', window );">Total</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring [Member] | Fair Value, Inputs, Level 2 [Member] | Money Market Funds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsFairValueDisclosure', window );">Cash and cash equivalents</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring [Member] | Fair Value, Inputs, Level 3 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsFairValueDisclosure', window );">Cash and cash equivalents</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Marketable securities</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsFairValueDisclosure', window );">Total</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationContingentConsiderationLiability', window );">Contingent consideration</a></td>
<td class="nump">5,629<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesFairValueDisclosure', window );">Total</a></td>
<td class="nump">5,629<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Recurring [Member] | Fair Value, Inputs, Level 3 [Member] | Money Market Funds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsFairValueDisclosure', window );">Cash and cash equivalents</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value portion of probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123874694&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AssetsFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(6))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124260329&amp;loc=d3e26610-111562<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (aa)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AvailableForSaleSecuritiesDebtSecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationContingentConsiderationLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liability recognized arising from contingent consideration in a business combination.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 35<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=116859824&amp;loc=d3e6819-128478<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 25<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=6911189&amp;loc=d3e6408-128476<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_BusinessCombinationContingentConsiderationLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value portion of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_CashAndCashEquivalentsFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value of financial and nonfinancial obligations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123874694&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_LiabilitiesFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel1Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel1Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByAssetClassAxis=us-gaap_MoneyMarketFundsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByAssetClassAxis=us-gaap_MoneyMarketFundsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel2Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel2Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel3Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel3Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>47
<FILENAME>R37.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485865236040">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 7 - Marketable Securities - Short-term and Long-term Available for Sale Securities (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">$ 46,924<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Unrealized Gains</a></td>
<td class="nump">165<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Unrealized Losses</a></td>
<td class="num">(48)<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value</a></td>
<td class="nump">47,041<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 93,445<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain', window );">Unrealized Gains</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">393<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss', window );">Unrealized Losses</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(23)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">93,815<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_BankTimeDepositsMember', window );">Bank Time Deposits [Member]</a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">5,394<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Unrealized Gains</a></td>
<td class="nump">54<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Unrealized Losses</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value</a></td>
<td class="nump">5,448<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,395<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain', window );">Unrealized Gains</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">93<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss', window );">Unrealized Losses</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,488<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USStatesAndPoliticalSubdivisionsMember', window );">US States and Political Subdivisions Debt Securities [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">20,968<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Unrealized Gains</a></td>
<td class="nump">43<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Unrealized Losses</a></td>
<td class="num">(17)<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value</a></td>
<td class="nump">20,994<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">25,003<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain', window );">Unrealized Gains</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">83<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss', window );">Unrealized Losses</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(2)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">25,084<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember', window );">Corporate Debt Securities [Member]</a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">19,062<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Unrealized Gains</a></td>
<td class="nump">68<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Unrealized Losses</a></td>
<td class="num">(29)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value</a></td>
<td class="nump">19,101<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">42,048<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain', window );">Unrealized Gains</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">211<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss', window );">Unrealized Losses</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(11)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">42,248<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember', window );">US Government Agencies Debt Securities [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">1,500<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Unrealized Gains</a></td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Unrealized Losses</a></td>
<td class="num">(2)<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value</a></td>
<td class="nump">$ 1,498<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">18,500<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain', window );">Unrealized Gains</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">6<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss', window );">Unrealized Losses</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(10)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">18,496<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember', window );">Commercial Paper, Not Included with Cash and Cash Equivalents [Member]</a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecurities', window );">Amortized Cost</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2,499<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain', window );">Unrealized Gains</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss', window );">Unrealized Losses</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HeldToMaturitySecuritiesFairValue', window );">Fair Value</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 2,499<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, before tax, of unrealized gain in accumulated other comprehensive income (AOCI) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, before tax, of unrealized loss in accumulated other comprehensive income (AOCI) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amortized cost of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(6))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124260329&amp;loc=d3e26610-111562<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (aa)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AvailableForSaleSecuritiesDebtSecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HeldToMaturitySecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, before allowance for credit loss, of investment in debt security measured at amortized cost (held-to-maturity).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124255206&amp;loc=SL82895884-210446<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 20<br> -Section 50<br> -Paragraph 14<br> -URI http://asc.fasb.org/extlink&amp;oid=124255953&amp;loc=SL82919253-210447<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7A<br> -URI http://asc.fasb.org/extlink&amp;oid=123577603&amp;loc=SL6953401-111524<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27232-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_HeldToMaturitySecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated unrecognized gain on investment in debt security measured at amortized cost (held-to-maturity).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27232-111563<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5A<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=SL120269820-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated unrealized loss on investment in debt security measured at amortized cost (held-to-maturity).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27232-111563<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5A<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=SL120269820-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HeldToMaturitySecuritiesFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value of investment in debt security measured at amortized cost (held-to-maturity).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (aa)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27232-111563<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(6))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=SL120269820-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_HeldToMaturitySecuritiesFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAxis=us-gaap_BankTimeDepositsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAxis=us-gaap_BankTimeDepositsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_USStatesAndPoliticalSubdivisionsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_USStatesAndPoliticalSubdivisionsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_CorporateDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_USGovernmentAgenciesDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>48
<FILENAME>R38.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485867381992">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 7 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)<br> $ in Thousands</strong></div></th>
<th class="th">
<div>Jun. 30, 2021 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue', window );">Due in one year or less</a></td>
<td class="nump">$ 18,341<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue', window );">Due after one year through five years</a></td>
<td class="nump">28,700<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Total marketable securities</a></td>
<td class="nump">$ 47,041<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), with single maturity date and allocated without single maturity date, maturing in next rolling fiscal year following latest fiscal year. For interim and annual periods when interim period is reported on rolling approach, from latest statement of financial position date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value of investment in debt security, measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), with single maturity date and allocated without single maturity date, maturing in next rolling fiscal year through fifth year following latest fiscal year. For interim and annual periods when interim period is reported on rolling approach, from latest statement of financial position date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(6))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124260329&amp;loc=d3e26610-111562<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (aa)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AvailableForSaleSecuritiesDebtSecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>49
<FILENAME>R39.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485863491992">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 8 - Inventory - Inventory (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryGross', window );">Total inventory</a></td>
<td class="nump">$ 9,395<span></span>
</td>
<td class="nump">$ 11,122<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryValuationReserves', window );">Allowance for obsolescence</a></td>
<td class="num">(284)<span></span>
</td>
<td class="num">(260)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryNet', window );">Inventory, net of allowance</a></td>
<td class="nump">$ 9,111<span></span>
</td>
<td class="nump">$ 10,862<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Gross amount, as of the balance sheet date, of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_InventoryGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_InventoryNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryValuationReserves">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of valuation reserve for inventory.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB TOPIC 5.BB)<br> -URI http://asc.fasb.org/extlink&amp;oid=27011343&amp;loc=d3e100047-122729<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_InventoryValuationReserves</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>50
<FILENAME>R40.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485867040968">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Stock-based Compensation (Details Textual) - USD ($)<br> $ / shares in Units, $ in Millions</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Share-based Payment Arrangement, Expense</a></td>
<td class="nump">$ 4.9<span></span>
</td>
<td class="nump">$ 3.6<span></span>
</td>
<td class="nump">$ 10.6<span></span>
</td>
<td class="nump">$ 6.7<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value (in dollars per share)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 57.26<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=prlb_ESPPMember', window );">ESPP [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate', window );">Share-based Compensation Arrangement by Share-based Payment Award, Discount from Market Price, Offering Date</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">15.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_EmployeeStockPurchasePlanOfferingPeriod', window );">Employee Stock Purchase Plan, Offering Period (Month)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">6 months<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent', window );">Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price of Common Stock, Percent</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">85.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Share-based Payment Arrangement, Option [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod', window );">Share-based Compensation Arrangement by Share-based Payment Award, Expiration Period (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">10 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total</a></td>
<td class="nump">5.8<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 5.8<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Share-based Payment Arrangement, Option [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">4 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Share-based Payment Arrangement, Option [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">5 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember', window );">Restricted Stock [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total</a></td>
<td class="nump">36.0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 36.0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">2 years 9 months 18 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember', window );">Restricted Stock [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember', window );">Restricted Stock [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">5 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember', window );">Performance Shares [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">3 years<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total</a></td>
<td class="nump">$ 3.2<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 3.2<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">2 years 4 months 24 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit', window );">Percentage of Target Number Capable of Being Earned and Vesting, Lower Limit</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit', window );">Percentage of Target Number Capable of Being Earned and Vesting, Upper Limit</a></td>
<td class="nump">150.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">150.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PlanNameAxis=prlb_LongtermIncentivePlan2012Member', window );">Long-Term Incentive Plan 2012 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod', window );">Share-based Compensation Arrangement by Share-based Payment Award, Expiration Period (Year)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">10 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_EmployeeStockPurchasePlanOfferingPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The offering period during which employees may purchase stock through the Employee Stock Purchase Plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_EmployeeStockPurchasePlanOfferingPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</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_prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The lower limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The upper limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllocatedShareBasedCompensationExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expense for award under share-based payment arrangement. Excludes amount capitalized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5047-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.F)<br> -URI http://asc.fasb.org/extlink&amp;oid=122041274&amp;loc=d3e301413-122809<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_AllocatedShareBasedCompensationExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cost not yet recognized for nonvested award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Period over which grantee's right to exercise award under share-based payment arrangement is no longer contingent on satisfaction of service or performance condition, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, combination of market, performance or service condition.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Discount rate from fair value on offering date that participants pay for shares.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The weighted average grant-date fair value of options granted during the reporting period as calculated by applying the disclosed option pricing methodology.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Period from grant date that an equity-based award expires, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</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_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Purchase price of common stock expressed as a percentage of its fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_AwardTypeAxis=prlb_ESPPMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=prlb_ESPPMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PlanNameAxis=prlb_LongtermIncentivePlan2012Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PlanNameAxis=prlb_LongtermIncentivePlan2012Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>51
<FILENAME>R41.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485950494744">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Stock-based Compensation - Stock Option Activity (Details)<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th">
<div>Jun. 30, 2021 </div>
<div>$ / shares </div>
<div>shares</div>
</th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Options outstanding (in shares) | shares</a></td>
<td class="nump">229,531<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Options outstanding, weighted-average exercise price (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 86.46<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross', window );">Granted (in shares) | shares</a></td>
<td class="nump">57,901<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice', window );">Granted, weighted-average exercise price (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 128.14<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised', window );">Exercised (in shares) | shares</a></td>
<td class="num">(28,991)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice', window );">Exercised, weighted-average exercise price (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 58.78<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod', window );">Forfeited (in shares) | shares</a></td>
<td class="num">(8,547)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice', window );">Forfeited, weighted-average exercise price (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 101.65<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Options outstanding (in shares) | shares</a></td>
<td class="nump">249,894<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Options outstanding, weighted-average exercise price (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 98.81<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber', window );">Options exercisable (in shares) | shares</a></td>
<td class="nump">116,452<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice', window );">Options exercisable, weighted-average exercise price (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 81.38<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of shares into which fully or partially vested stock options outstanding as of the balance sheet date can be currently converted under the option plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The weighted-average price as of the balance sheet date at which grantees can acquire the shares reserved for issuance on vested portions of options outstanding and currently exercisable under the stock option plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of shares under options that were cancelled during the reporting period as a result of occurrence of a terminating event specified in contractual agreements pertaining to the stock option plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Gross number of share options (or share units) granted during the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of options outstanding, including both vested and non-vested options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(i)-(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average price at which grantees can acquire the shares reserved for issuance under the stock option plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average price at which option holders acquired shares when converting their stock options into shares.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average price at which grantees could have acquired the underlying shares with respect to stock options that were terminated.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average per share amount at which grantees can acquire shares of common stock by exercise of options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of share options (or share units) exercised during the current period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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>XML
<SEQUENCE>52
<FILENAME>R42.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485948306248">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details) - Share-based Payment Arrangement, Option [Member]<br></strong></div></th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1', window );">Expected life (Year)</a></td>
<td class="text">6 years 3 months<span></span>
</td>
<td class="text">6 years 3 months<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate', window );">Expected dividend yield</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate', window );">Risk-free interest rate</a></td>
<td class="nump">0.80%<span></span>
</td>
<td class="nump">0.50%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate', window );">Expected volatility</a></td>
<td class="nump">45.28%<span></span>
</td>
<td class="nump">42.40%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate', window );">Risk-free interest rate</a></td>
<td class="nump">1.12%<span></span>
</td>
<td class="nump">1.47%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate', window );">Expected volatility</a></td>
<td class="nump">45.53%<span></span>
</td>
<td class="nump">43.83%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The estimated dividend rate (a percentage of the share price) to be paid (expected dividends) to holders of the underlying shares over the option's term.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The estimated measure of the percentage by which a share price is expected to fluctuate during a period. Volatility also may be defined as a probability-weighted measure of the dispersion of returns about the mean. The volatility of a share price is the standard deviation of the continuously compounded rates of return on the share over a specified period. That is the same as the standard deviation of the differences in the natural logarithms of the stock prices plus dividends, if any, over the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The risk-free interest rate assumption that is used in valuing an option on its own shares.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(iv)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Expected term of award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.D.2)<br> -URI http://asc.fasb.org/extlink&amp;oid=122041274&amp;loc=d3e301413-122809<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</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_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>53
<FILENAME>R43.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485948410760">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Stock-based Compensation - Restricted Stock Options (Details) - Restricted Stock [Member]<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th">
<div>Jun. 30, 2021 </div>
<div>$ / shares </div>
<div>shares</div>
</th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber', window );">Restricted stock (in shares) | shares</a></td>
<td class="nump">307,199<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Restricted stock, weighted-average grant date fair value (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 98.87<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod', window );">Granted (in shares) | shares</a></td>
<td class="nump">178,398<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Granted, weighted-average grant date fair value (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 133.67<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod', window );">Restrictions lapsed (in shares) | shares</a></td>
<td class="num">(113,315)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue', window );">Restrictions lapsed, weighted-average grant date fair value (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 91.10<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod', window );">Forfeited (in shares) | shares</a></td>
<td class="num">(14,525)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue', window );">Forfeited, weighted-average grant date fair value (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 105.72<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber', window );">Restricted stock (in shares) | shares</a></td>
<td class="nump">357,757<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Restricted stock, weighted-average grant date fair value (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 118.41<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of equity-based payment instruments, excluding stock (or unit) options, that were forfeited during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised or put into effect as a result of the occurrence of a terminating event.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of non-vested equity-based payment instruments, excluding stock (or unit) options, that validly exist and are outstanding as of the balance sheet date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(i)-(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(i)-(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>54
<FILENAME>R44.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485972513288">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Stock-based Compensation - Performance Stock (Details) - Performance Shares [Member]<br></strong></div></th>
<th class="th" colspan="1">6 Months Ended</th>
</tr>
<tr><th class="th">
<div>Jun. 30, 2021 </div>
<div>$ / shares </div>
<div>shares</div>
</th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions', window );">Performance stock (in shares) | shares</a></td>
<td class="nump">19,956<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Restricted stock, weighted-average grant date fair value (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 118.66<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod', window );">Granted (in shares) | shares</a></td>
<td class="nump">15,078<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Granted, weighted-average grant date fair value (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 203.64<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod', window );">Restrictions lapsed (in shares) | shares</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue', window );">Restrictions lapsed, weighted-average grant date fair value (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange', window );">Performance change (in shares) | shares</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue', window );">Performance change, weighted-average grant date fair value (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod', window );">Forfeited (in shares) | shares</a></td>
<td class="num">(4,184)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue', window );">Forfeited, weighted-average grant date fair value (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 99.59<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions', window );">Performance stock (in shares) | shares</a></td>
<td class="nump">30,850<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Restricted stock, weighted-average grant date fair value (in dollars per share) | $ / shares</a></td>
<td class="nump">$ 160.19<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Represents the amount of shares related to a performance change related to equity instruments other than option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Represents the weighted average grant date fair value per share in connection to a performance change related to equity instruments other than options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of equity-based payment instruments, excluding stock (or unit) options, that were forfeited during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised or put into effect as a result of the occurrence of a terminating event.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(i)-(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</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_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of shares reserved for issuance pertaining to the outstanding exercisable stock options as of the balance sheet date in the customized range of exercise prices for which the market and performance vesting condition has been satisfied.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>55
<FILENAME>R45.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485867247128">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Stock-based Compensation - Assumptions Used in the Valuation of Performance Stock (Details) - Performance Shares [Member]<br></strong></div></th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate', window );">Risk-free interest rate</a></td>
<td class="nump">0.22%<span></span>
</td>
<td class="nump">1.41%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1', window );">Expected life (Year)</a></td>
<td class="text">2 years 10 months 13 days<span></span>
</td>
<td class="text">2 years 10 months 17 days<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate', window );">Expected volatility</a></td>
<td class="nump">51.40%<span></span>
</td>
<td class="nump">38.70%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate', window );">Expected dividend yield</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The estimated dividend rate (a percentage of the share price) to be paid (expected dividends) to holders of the underlying shares over the option's term.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The estimated measure of the percentage by which a share price is expected to fluctuate during a period. Volatility also may be defined as a probability-weighted measure of the dispersion of returns about the mean. The volatility of a share price is the standard deviation of the continuously compounded rates of return on the share over a specified period. That is the same as the standard deviation of the differences in the natural logarithms of the stock prices plus dividends, if any, over the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The risk-free interest rate assumption that is used in valuing an option on its own shares.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(iv)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Expected term of award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.D.2)<br> -URI http://asc.fasb.org/extlink&amp;oid=122041274&amp;loc=d3e301413-122809<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</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_us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>56
<FILENAME>R46.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485863712712">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 9 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details) - Employee Stock Purchase Plan [Member]<br></strong></div></th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1', window );">Expected life (months) (Month)</a></td>
<td class="text">6 months<span></span>
</td>
<td class="text">6 months<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate', window );">Expected dividend yield</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PlanNameAxis=prlb_EmployeeStockPurchasePlanMember', window );">Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate', window );">Risk-free interest rate</a></td>
<td class="nump">0.06%<span></span>
</td>
<td class="nump">0.17%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate', window );">Expected volatility</a></td>
<td class="nump">50.85%<span></span>
</td>
<td class="nump">42.63%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PlanNameAxis=prlb_EmployeeStockPurchasePlanMember', window );">Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate', window );">Risk-free interest rate</a></td>
<td class="nump">0.12%<span></span>
</td>
<td class="nump">1.59%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate', window );">Expected volatility</a></td>
<td class="nump">65.53%<span></span>
</td>
<td class="nump">59.99%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The estimated dividend rate (a percentage of the share price) to be paid (expected dividends) to holders of the underlying shares over the option's term.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The estimated measure of the percentage by which a share price is expected to fluctuate during a period. Volatility also may be defined as a probability-weighted measure of the dispersion of returns about the mean. The volatility of a share price is the standard deviation of the continuously compounded rates of return on the share over a specified period. That is the same as the standard deviation of the differences in the natural logarithms of the stock prices plus dividends, if any, over the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The risk-free interest rate assumption that is used in valuing an option on its own shares.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(iv)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Expected term of award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.D.2)<br> -URI http://asc.fasb.org/extlink&amp;oid=122041274&amp;loc=d3e301413-122809<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</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_us-gaap_PlanNameAxis=prlb_EmployeeStockPurchasePlanMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PlanNameAxis=prlb_EmployeeStockPurchasePlanMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>57
<FILENAME>R47.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485948536824">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 10 - Accumulated Other Comprehensive Income (Loss) - Other Comprehensive Loss (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance</a></td>
<td class="nump">$ 813,431<span></span>
</td>
<td class="nump">$ 587,740<span></span>
</td>
<td class="nump">$ 644,356<span></span>
</td>
<td class="nump">$ 585,790<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance</a></td>
<td class="nump">831,977<span></span>
</td>
<td class="nump">601,249<span></span>
</td>
<td class="nump">831,977<span></span>
</td>
<td class="nump">601,249<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedOtherComprehensiveIncomeMember', window );">AOCI Attributable to Parent [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance</a></td>
<td class="num">(10,096)<span></span>
</td>
<td class="num">(9,998)<span></span>
</td>
<td class="num">(3,420)<span></span>
</td>
<td class="num">(7,018)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance</a></td>
<td class="num">(8,115)<span></span>
</td>
<td class="num">(9,634)<span></span>
</td>
<td class="num">(8,115)<span></span>
</td>
<td class="num">(9,634)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedTranslationAdjustmentMember', window );">Accumulated Foreign Currency Adjustment Attributable to Parent [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent', window );">Other comprehensive income (loss) before reclassifications</a></td>
<td class="nump">2,030<span></span>
</td>
<td class="nump">364<span></span>
</td>
<td class="num">(4,812)<span></span>
</td>
<td class="num">(2,616)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent', window );">Amounts reclassified from accumulated other comprehensive loss</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Net current-period other comprehensive income (loss)</a></td>
<td class="nump">2,030<span></span>
</td>
<td class="nump">364<span></span>
</td>
<td class="num">(4,812)<span></span>
</td>
<td class="num">(2,616)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember', window );">AOCI, Accumulated Gain (Loss), Debt Securities, Available-for-sale, Parent [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent', window );">Other comprehensive income (loss) before reclassifications</a></td>
<td class="num">(49)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">117<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent', window );">Amounts reclassified from accumulated other comprehensive loss</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Net current-period other comprehensive income (loss)</a></td>
<td class="num">$ (49)<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 117<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax, before reclassification adjustments, of other comprehensive income (loss), attributable to parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=124507222&amp;loc=d3e1436-108581<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669686-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of other comprehensive income (loss) attributable to parent entity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669625-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=109239629&amp;loc=SL4573702-111684<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=123454820&amp;loc=SL4569643-111683<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669619-108580<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 19<br> -URI http://asc.fasb.org/extlink&amp;oid=123454820&amp;loc=SL4569616-111683<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of reclassification adjustments of other comprehensive income (loss) attributable to parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669686-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=124507222&amp;loc=d3e1436-108581<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_StockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -URI http://asc.fasb.org/extlink&amp;oid=122038336&amp;loc=d3e74512-122707<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedOtherComprehensiveIncomeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedOtherComprehensiveIncomeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedTranslationAdjustmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedTranslationAdjustmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>58
<FILENAME>R48.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140486044738264">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 11 - Income Taxes (Details Textual) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Income Tax Expense (Benefit), Total</a></td>
<td class="nump">$ 3,326<span></span>
</td>
<td class="nump">$ 2,511<span></span>
</td>
<td class="nump">$ 3,562<span></span>
</td>
<td class="nump">$ 6,406<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateContinuingOperations', window );">Effective Income Tax Rate Reconciliation, Percent, Total</a></td>
<td class="nump">20.50%<span></span>
</td>
<td class="nump">16.60%<span></span>
</td>
<td class="nump">17.60%<span></span>
</td>
<td class="nump">19.40%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod', window );">Effective Income Tax Rate Continuing Operations Increase (Decrease) During the Period</a></td>
<td class="nump">3.90%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(1.80%)<span></span>
</td>
<td class="text">&#160;<span></span>
</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="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate', window );">Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">21.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefits', window );">Unrecognized Tax Benefits, Ending Balance</a></td>
<td class="nump">$ 5,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 5,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 4,800<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the period in percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.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;">prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>prlb_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_EffectiveIncomeTaxRateContinuingOperations">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_EffectiveIncomeTaxRateContinuingOperations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of domestic federal statutory tax rate applicable to pretax income (loss).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</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_us-gaap_IncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32672-109319<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 20<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123586238&amp;loc=d3e38679-109324<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(9))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</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_us-gaap_UnrecognizedTaxBenefits">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of unrecognized tax benefits.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10B<br> -URI http://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=SL37586934-109318<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_UnrecognizedTaxBenefits</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>59
<FILENAME>R49.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485948455752">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Segment Reporting - Revenue From Operations by Reportable Segment (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 123,048<span></span>
</td>
<td class="nump">$ 106,575<span></span>
</td>
<td class="nump">$ 239,174<span></span>
</td>
<td class="nump">$ 221,683<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">123,048<span></span>
</td>
<td class="nump">106,575<span></span>
</td>
<td class="nump">239,174<span></span>
</td>
<td class="nump">221,683<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | United States Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">95,344<span></span>
</td>
<td class="nump">86,823<span></span>
</td>
<td class="nump">186,397<span></span>
</td>
<td class="nump">176,899<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | Europe Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">24,655<span></span>
</td>
<td class="nump">16,729<span></span>
</td>
<td class="nump">46,104<span></span>
</td>
<td class="nump">37,516<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | Japan Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 3,049<span></span>
</td>
<td class="nump">$ 3,023<span></span>
</td>
<td class="nump">$ 6,673<span></span>
</td>
<td class="nump">$ 7,268<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9038-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130545-203045<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130543-203045<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 42<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9054-108599<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 40<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9031-108599<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 924<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -URI http://asc.fasb.org/extlink&amp;oid=6472922&amp;loc=d3e499488-122856<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_UnitedStatesSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_UnitedStatesSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_EuropeSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_EuropeSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_JapanSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_JapanSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>60
<FILENAME>R50.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485948394264">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Segment Reporting - Income From Operations (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Income from operations</a></td>
<td class="nump">$ 16,104<span></span>
</td>
<td class="nump">$ 14,351<span></span>
</td>
<td class="nump">$ 20,365<span></span>
</td>
<td class="nump">$ 31,176<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Income from operations</a></td>
<td class="nump">16,104<span></span>
</td>
<td class="nump">14,351<span></span>
</td>
<td class="nump">20,365<span></span>
</td>
<td class="nump">31,176<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | United States Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Income from operations</a></td>
<td class="nump">26,280<span></span>
</td>
<td class="nump">24,349<span></span>
</td>
<td class="nump">48,783<span></span>
</td>
<td class="nump">49,438<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | Europe Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Income from operations</a></td>
<td class="nump">5,063<span></span>
</td>
<td class="nump">2,261<span></span>
</td>
<td class="nump">3,692<span></span>
</td>
<td class="nump">6,625<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | Japan Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Income from operations</a></td>
<td class="num">$ (15,239)<span></span>
</td>
<td class="num">$ (12,259)<span></span>
</td>
<td class="num">$ (32,110)<span></span>
</td>
<td class="num">$ (24,887)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The net result for the period of deducting operating expenses from operating revenues.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_OperatingIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_UnitedStatesSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_UnitedStatesSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_EuropeSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_EuropeSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_JapanSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_JapanSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>61
<FILENAME>R51.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485953790248">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Note 12 - Segment Reporting - Long-lived Assets by Geographic Region (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Long-lived assets</a></td>
<td class="nump">$ 288,495<span></span>
</td>
<td class="nump">$ 282,666<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Long-lived assets</a></td>
<td class="nump">288,495<span></span>
</td>
<td class="nump">282,666<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | United States Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Long-lived assets</a></td>
<td class="nump">222,117<span></span>
</td>
<td class="nump">215,721<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | Europe Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Long-lived assets</a></td>
<td class="nump">60,140<span></span>
</td>
<td class="nump">59,388<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember', window );">Operating Segments [Member] | Japan Segment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Long-lived assets</a></td>
<td class="nump">$ 6,238<span></span>
</td>
<td class="nump">$ 7,557<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(14))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 360<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124429447&amp;loc=SL124453093-239630<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(13))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ConsolidationItemsAxis=us-gaap_OperatingSegmentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_UnitedStatesSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_UnitedStatesSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_EuropeSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_EuropeSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementBusinessSegmentsAxis=prlb_JapanSegmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementBusinessSegmentsAxis=prlb_JapanSegmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>62
<FILENAME>R52.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="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.21.2</span><table class="report" border="0" cellspacing="2" id="idm140485950507992">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Note 12 - Segment Reporting - Disaggregation of Revenue (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="2">6 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
<th class="th"><div>Jun. 30, 2021</div></th>
<th class="th"><div>Jun. 30, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 123,048<span></span>
</td>
<td class="nump">$ 106,575<span></span>
</td>
<td class="nump">$ 239,174<span></span>
</td>
<td class="nump">$ 221,683<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ProductOrServiceAxis=prlb_InjectionMoldingProtomoldMember', window );">Injection Molding (Protomold) [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">58,168<span></span>
</td>
<td class="nump">57,894<span></span>
</td>
<td class="nump">114,527<span></span>
</td>
<td class="nump">112,670<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ProductOrServiceAxis=prlb_CNCMachiningFirstcutMember', window );">CNC Machining (Firstcut) [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">41,592<span></span>
</td>
<td class="nump">28,760<span></span>
</td>
<td class="nump">78,295<span></span>
</td>
<td class="nump">66,645<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ProductOrServiceAxis=prlb_ThreeDPrintingFinelineMember', window );">3D Printing (Fineline) [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">18,170<span></span>
</td>
<td class="nump">14,236<span></span>
</td>
<td class="nump">35,405<span></span>
</td>
<td class="nump">30,184<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ProductOrServiceAxis=prlb_SheetMetalMember', window );">Sheet Metal [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">4,717<span></span>
</td>
<td class="nump">4,669<span></span>
</td>
<td class="nump">9,936<span></span>
</td>
<td class="nump">10,318<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ProductOrServiceAxis=prlb_OtherProductsMember', window );">Other Products [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 401<span></span>
</td>
<td class="nump">$ 1,016<span></span>
</td>
<td class="nump">$ 1,011<span></span>
</td>
<td class="nump">$ 1,866<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9038-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130545-203045<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130543-203045<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 42<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9054-108599<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 40<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9031-108599<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 924<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -URI http://asc.fasb.org/extlink&amp;oid=6472922&amp;loc=d3e499488-122856<br></p></div>
<a href="javascript:void(0);" onclick="top.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;">us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</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_srt_ProductOrServiceAxis=prlb_InjectionMoldingProtomoldMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ProductOrServiceAxis=prlb_InjectionMoldingProtomoldMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ProductOrServiceAxis=prlb_CNCMachiningFirstcutMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ProductOrServiceAxis=prlb_CNCMachiningFirstcutMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ProductOrServiceAxis=prlb_ThreeDPrintingFinelineMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ProductOrServiceAxis=prlb_ThreeDPrintingFinelineMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ProductOrServiceAxis=prlb_SheetMetalMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ProductOrServiceAxis=prlb_SheetMetalMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ProductOrServiceAxis=prlb_OtherProductsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ProductOrServiceAxis=prlb_OtherProductsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EXCEL
<SEQUENCE>63
<FILENAME>Financial_Report.xlsx
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 Financial_Report.xlsx
M4$L#!!0    ( $2( U,'04UB@0   +$    0    9&]C4')O<',O87!P+GAM
M;$V./0L",1!$_\IQO;=!P4)B0-!2L+(/>QLOD&1#LD)^OCG!CVX>;QA&WPIG
M*N*I#BV&5(_C(I(/ !47BK9.7:=N')=HI6-Y #OGD<Z,STA)8*O4'J@)I9GF
M3?X.CD:?<@X>K7A.YNJQ<&4GPZ4A!0W_<FW>J=0U[R;UEA_6\#MI7E!+ P04
M    " !$B -3OM>..>X    K @  $0   &1O8U!R;W!S+V-O<F4N>&ULS9+!
M:L,P#(9?9?B>R$[H&";UI:.G#@8K;.QF;+4UBQ-C:R1]^SE9FS*V!]C1TN]/
MGT"-"=+T$9]C'S"2PW0W^K9+TH0U.Q$%"9#,";U.94YTN7GHH]>4G_$(09L/
M?42H.+\'CZ2M)@T3L @+D:G&&FDB:NKC!6_-@@^?L9UAU@"VZ+&C!*(4P-0T
M,9S'MH$;8((11I^^"V@7XES]$SMW@%V28W)+:AB&<JCG7-Y!P-O3[F5>MW!=
M(MT9S+^2DW0.N&;7R:_UYG&_9:KBE2CX0\'K?24D%W*U>I]<?_C=A'UOW<']
M8^.KH&K@UUVH+U!+ P04    " !$B -3F5R<(Q &  "<)P  $P   'AL+W1H
M96UE+W1H96UE,2YX;6SM6EMSVC@4?N^OT'AG]FT+QC:!MK03<VEVV[29A.U.
M'X416(UL>621A'^_1S80RY8-[9)-NIL\!"SI^\Y%1^?H.'GS[BYBZ(:(E/)X
M8-DOV]:[MR_>X%<R)!%!,!FGK_# "J5,7K5::0##.'W)$Q+#W(*+"$MX%,O6
M7.!;&B\CUNJTV]U6A&ELH1A'9&!]7BQH0-!445IO7R"TY1\S^!7+5(UEHP$3
M5T$FN8BT\OELQ?S:WCYES^DZ'3*!;C ;6"!_SF^GY$Y:B.%4PL3 :F<_5FO'
MT=)(@(+)?90%NDGVH],5"#(-.SJ=6,YV?/;$[9^,RMIT-&T:X./Q>#BVR]*+
M<!P$X%&[GL*=]&R_I$$)M*-IT&38]MJND::JC5-/T_=]W^N;:)P*C5M/TVMW
MW=..B<:MT'@-OO%/A\.NB<:KT'3K:28G_:YKI.D6:$)&X^MZ$A6UY4#3( !8
M<';6S-(#EEXI^G64&MD=N]U!7/!8[CF)$?[&Q036:=(9EC1&<IV0!0X -\31
M3%!\KT&VBN#"DM)<D-;/*;50&@B:R('U1X(AQ=RO_?67N\FD,WJ=?3K.:Y1_
M::L!I^V[F\^3_'/HY)^GD]=-0LYPO"P)\?LC6V&')VX[$W(Z'&="?,_V]I&E
M)3+/[_D*ZTX\9Q]6EK!=S\_DGHQR([O=]EA]]D]';B/7J<"S(M>41B1%G\@M
MNN01.+5)#3(3/PB=AIAJ4!P"I DQEJ&&^+3&K!'@$WVWO@C(WXV(]ZMOFCU7
MH5A)VH3X$$8:XIQSYG/1;/L'I4;1]E6\W*.76!4!EQC?-*HU+,76>)7 \:V<
M/!T3$LV4"P9!AI<D)A*I.7Y-2!/^*Z7:_IS30/"4+R3Z2I&/:;,CIW0FS>@S
M&L%&KQMUAVC2/'K^!?F<-0H<D1L= F<;LT8AA&F[\!ZO)(Z:K<(1*T(^8ADV
M&G*U%H&V<:F$8%H2QM%X3M*T$?Q9K#63/F#([,V1=<[6D0X1DEXW0CYBSHN0
M$;\>ACA*FNVB<5@$_9Y>PTG!Z(++9OVX?H;5,VPLCO='U!=*Y \FIS_I,C0'
MHYI9";V$5FJ?JH<T/J@>,@H%\;D>/N5Z> HWEL:\4*Z">P'_T=HWPJOX@L Y
M?RY]SZ7ON?0]H=*W-R-]9\'3BUO>1FY;Q/NN,=K7-"XH8U=RS<C'5*^3*=@Y
MG\#L_6@^GO'M^MDDA*^:62TC%I!+@;-!)+C\B\KP*L0)Z&1;)0G+5--E-XH2
MGD(;;NE3]4J5U^6ON2BX/%ODZ:^A=#XLS_D\7^>TS0LS0[=R2^JVE+ZU)CA*
M]+',<$X>RPP[9SR2';9WH!TU^_9==N0CI3!3ET.X&D*^ VVZG=PZ.)Z8D;D*
MTU*0;\/YZ<5X&N(YV02Y?9A7;>?8T='[Y\%1L*/O/)8=QXCRHB'NH8:8S\-#
MAWE[7YAGE<90-!1M;*PD+$:W8+C7\2P4X&1@+: '@Z]1 O)256 Q6\8#*Y"B
M?$R,1>APYY=<7^/1DN/;IF6U;J\I=QEM(E(YPFF8$V>KRMYEL<%5'<]56_*P
MOFH]M!5.S_Y9K<B?#!%.%@L22&.4%Z9*HO,94[[G*TG$53B_13.V$I<8O./F
MQW%.4[@2=K8/ C*YNSFI>F4Q9Z;RWRT,"2Q;B%D2XDU=[=7GFYRN>B)V^I=W
MP6#R_7#)1P_E.^=?]%U#KG[VW>/Z;I,[2$R<><41 71% B.5' 86%S+D4.Z2
MD 83 <V4R43P H)DIAR F/H+O?(,N2D5SJT^.7]%+(.&3E[2)1(4BK ,!2$7
M<N/O[Y-J=XS7^BR!;814,F35%\I#B<$],W)#V%0E\Z[:)@N%V^)4S;L:OB9@
M2\-Z;ITM)__;7M0]M!<]1O.CF> >LX=SFWJXPD6L_UC6'ODRWSEPVSK> U[F
M$RQ#I'[!?8J*@!&K8KZZKT_Y)9P[M'OQ@2";_-;;I/;=X Q\U*M:I60K$3]+
M!WP?D@9CC%OT-%^/%&*MIK&MQMHQ#'F 6/,,H68XWX=%FAHSU8NL.8T*;T'5
M0.4_V]0-:/8--!R1!5XQF;8VH^1."CS<_N\-L,+$CN'MB[\!4$L#!!0    (
M $2( U.@W)S1.04  (H5   8    >&PO=V]R:W-H965T<R]S:&5E=#$N>&UL
ME9A=4^LV$(:O3W^%)M.+=H9@6\X'.1,R$P*TM, )A)X.[?1"L97$@VVEDDS@
MWW<E.W9@G+5[ [9CO7JT*[TK:[P3\D5M.-?D+8E3==[9:+W]ZC@JV/"$J5.Q
MY2G\LA(R81INY=I16\E9:!LEL4-==^ D+$H[D[%]-I>3L<AT'*5\+HG*DH3)
M]PL>B]UYQ^OL'SQ&ZXTV#YS)>,O6?,'U']NYA#NG5 FCA*<J$BF1?'7>F7I?
M9SXU#>P;WR.^4P?7Q QE*<2+N;D)SSNN(>(Q#[218/#OE<]X'!LEX/BW$.V4
M?9J&A]=[]6L[>!C,DBD^$_&?4:@WYYVS#@GYBF6Q?A2[7WDQH+[1"T2L[%^R
MR]_M]3HDR)062=$8")(HS?^SMR(0APV\(PUHT8!^:N =Z\$O&OAVH#F9'=8E
MTVPREF)'I'D;U,R%C8UM#:.)4I/&A9;P:P3M].12!!ED19-I&I*K5$?ZG=RD
M^?0P8>X2M6&2J[&CH3?3Q@D*Y8M<F1Y1'I [D>J- M60AQ_;.T!9HM(]Z@5%
M!7_+TE/BNR>$NM2KX9DU-8]/"1W5-?^ XY>1\ZV>WQ2YPW#]?0MOD1O-$_4/
MTD>O[*-G^^@=Z:-(R RZD2R&GD+^1G[G[W79P)5<U_5Z/7\P&"%8_1*KWP;K
MD:\C!6 0@WN6\#HH7&<NA1;DEBT5#"U P 8EV  5G$)"0IN4ZYBMZX#P]BL6
M*XYP#$N.(:HSRZ2T%)$*(&_/G$FS# @LT=HPX6K=KD>[/C9GSTJN,U2IG+,%
MV)S+2(3D&A[7KG!<[8$B2*,2:?2_D&RLC@+A6@TKVW,K4W3;03V];VL3UM#>
M<[L/&,B!.WOM0!XR)C67L5EU6R%U+12NI66&S6V/5E"T'50Q?;"9W2"U]_0?
MOGQI2E[ERY[?,GE@32JROHP$#1=K<@2OLG*OE9=?1S$G]UFRY+(6I\G&O:[?
M[_E]#*FR<:^5CX/W"@GQL27LA"PTY)((268B@[H#Y4>$];G%U>_N,<C*TCW<
MDPO()_9&;D)(:[2*@KS8(E'$)7M>UQOYHP$]PP@KL_=P?RX(IV$(&R5ULK\@
M=B_P+:V/'2[9[_=<,H=!<@YYD)R_D$L)^UV,MRH"'N[;GWEGY@[R_21V:2TK
M+G?'MC"EYS%\,V!X54'P<!?_C%?.1]@NO$9I4!]/7!.=B[2J"Q3W]<]H<Z$T
MU*R_HNW11=*@V._[?6Q+1JM207%[MUF<PJ?<<11<8#CP,9"J/%#<TV^%W5IL
M8/(B2[1!I#<<=?W!F8L1516!XB;^%&F8H6)%//K3\F>RX$$F(5JU6+C23"0)
M.,]"B^ %T@];E>\LSCCYT3T%:S8%D2S,]Q*&754,BIL]U*\P2M=D\9XL15Q+
MBPO,'V\O,)*J4%#<RO<1(U=OP8:E:WYTP]\@=/^\N,*(JJI 6U6%_48[K^\V
M6. 6]7O'!L7GSQ^Y'\FJ:D!;58.;%+9K^2&%V1RQ/6HM&:[80%;Y/FWE^V8'
M D4%3'4M9/TBP'5NF809, T"#D(@$^:2&&-E_K25^2\2%L?D(E/PLZK/)J[3
MM&_S*\_W6WG^5<+EVDRP7T!!;\!DDRU+:\/7(-B(5EF^CSOV/E@;#L'"@'"9
M1J#*^GW<M?>K\H-+6D-4Y%NFH5BFQM'J#F\*Y;Y5-H>/KQ,Z' X\UU2EUT,J
MY^"TRR3%'@(J$IC=:G[P53XM#QJG]GC-J5[/3RGOF,FI(C%?05/W= C=R_S@
M+[_18FO/SI9":Y'8RPUG(9?F!?A])83>WY@.RN/7R7]02P,$%     @ 1(@#
M4U:^VJ &!P  $1X  !@   !X;"]W;W)K<VAE971S+W-H965T,BYX;6RMF6MO
MVS84AO\*8138!K@U+[IV28 VQ6[8L*!IM\^,1,=")=&3J*39K]^AK(BV>'$*
M[(,3R7Y)O3HDSW,H73S*[DN_$T*AKTW=]I>KG5+[MYM-7^Q$P_LW<B]:^&4K
MNX8K..WN-_V^$[P<&S7UAF*<;!I>M:NKB_&[F^[J0@ZJKEIQTZ%^:!K>/;T7
MM7R\7)'5\Q<?J_N=TE]LKB[V_%[<"O5Y?]/!V6;NI:P:T?:5;%$GMI>K=^3M
M=81U@U'Q5R4>^Z-CI&_E3LHO^N37\G*%M2-1BT+I+CC\>Q#7HJYU3^#CGZG3
MU7Q-W?#X^+GWG\:;AYNYX[VXEO7?5:EVEZMLA4JQY4.M/LK'7\1T0['NKY!U
M/_Y%CY,6KU Q]$HV4V-PT%3MX3__.@7BJ &)/ WHU("^M &;&K#Q1@_.QMOZ
MP!6_NNCD(^JT&GK3!V-LQM9P-U6KA_%6=?!K!>W4U;5L>UE7)5>B1.]YS=M"
MH%O=78^^OQZZ3K0*W8BNDB7ZW/*AK$#X WJ-/M]^0-^_^@&]0E6+/NWDT/.V
M["\V"DSIKC?%9.#]P0#U&/AM:-\@AM>(8DH<S:_#S3^( IJ3L3D^;;Z!4,SQ
MH',\Z-@?\\5CNF7>]Q""0(=L[I"-'4:^#GF_0Q :5.@#\<]0/? :KN ,U:&K
M9.Q*+\"'JXCD.+_8/!Q'Q%81FB:8S;(3H]%L- H:O=W)3KU6HFM@?G5?A.)W
MM4"]*(:N4I5P^CWT&!\[R5A$%GYM%8MPEKGMQK/=.&CW75'( <((N:00$%,P
MNT8MY#VY1;R&[#3.9,ASJ)3#G=H.-:2,J0E(7I%UGJ?CP,!AFA$8<?T]3$<Q
M3\?Q9YAAHKD3W3S+UG#)?B_&_%,_N<(26S<,44GQ(BRV*DZS-'6')9G#D@3#
M\FO[ )-+=DY?B77%G)#E:-DB@K.$NFVELZWTC*U"-@(I_E4<CYC+9&I=/XK3
M>&'2%L41=EO,9HM9T.)-)_:\*I'X"HCLP:8>?*EV,/)%("D<3&>.H!&<+EP[
M5 0S3VCSV7<>]/U)*EZ_P&)N7SQ)8\(6'FT9C: F\)@DV' &GPDOE!Z=>AK#
MJM/@'HH!-2Y9)S2P[2/+HGPY$9PZFB2)Q^\1%TG0[\]2EH]573O-$7N.XI3D
MRZ7DT!&:I;$OF 92A ;-_3E.RZI5O+VO=)H^#+L_FM0V#*,?+?W:,A*QV+.P
MB$$@"3/P=]G>?R-9IAY/QS7%RQSJD,4YBSU)E!@6DC ,_X2YRE75WJ-:0)$8
M6%;$IEN686LFV*H\BV./3<- $H;@3U4[8NZL29LUE$3+].12L=RWD@R12!A)
MA\E:SW,@8--F3Y0FR_+'I8(E[[%I"$7"B#KDT8 YFSEYE-/<FI*V+HT@A48>
M@X9/)'M1:5I7_*ZJ'2OGM%_##Q(&R%Q)[?F3#\K$@06H.+/EO3L@D]'(4^I1
M P\:A@=8[ ;8H$ 1H>',]0[099/:-"!1SI9#Y)*1/,L]-@TS:)@9SS:/1LA4
M$4Z_#D#$.*5+OPY90G)/P4^/]CIAC#S/J$*V.M=-AWU5CLG/$V*;$31GR=*Q
MK?)0A!J*T#,[J<FM7.1F[WJ8#+M(8N4^AXK1U -J:CA"PQQY]KP]2=3G'-NP
MB.,EJYTBGU\#%!H&RDF='L@'U$9%9*TR6^.; X8E-,R2TV+W7!QM4"0T(M;0
MV[(8T]B3KZD!"@T#Q50]W[2^;'S0)%]6Z0Z5+[:&+S2\ 3)^OW6%V?N:%.=6
MF!VJ./-@FQIZT3"]C.MO6V.N[1!;EAHN54X\G& &9RR,,^.Y%%L!<[G4*^Z<
M9693BR59OF2P2\8RWW1F!FXL#+=E&7?.K<VL)+9J.9>*,D]=S S86!ALAS1Q
MSJ%CMT-29NV(';H\SWQ%#3MZ,,B"]=SMCG=B)VO(!OUWXY98/84>.!KHL#!T
M;KKG6=4K67Q9HU?X#<8$\GF''G@]B#7B@]K)KOH7- 2O,1X_J->.^A]1U?>Z
MC!E+ET'UL,LL=3)X%DR/R@0O=B]\9.8,OPVP)4&"DM/@&,*Q,.&N9=/(]F61
MB5\<&IJNTX2L<<+&GVBR3E/XY,EIR/Z7IXO,L4VSDH!#X]D4,P-?%H;ON[*L
M-+9@:>DG9:^K%A5\7\%2<]IT;-,2$EM<<.B@/O.O+\-?%N;O1Z$X?%7"1.U:
M&"1W$K!!RM(L2BR7#ET"FS_B<6FHR\+4A3W#T SU^/YE>MH(FQQ(#/I5V0-P
M3/9NXS9.7V>$+)^/N60LHKYE9+#+7O+4L3^;PB:S-D<S1O+4BK*M2Z*(Q9XJ
M(3+$C<+$M8 P+KZ7VI\Z/W[CXMSZ.W3.K?_FZ'V=?EGZ!^_NJ[:'RF4+#?&;
M% +0'=X_'DZ4W(^O\.ZD4K(9#W>"@VTM@-^W4JKG$_U6<'X+?/4?4$L#!!0
M   ( $2( U.SNG9[W (  %H)   8    >&PO=V]R:W-H965T<R]S:&5E=#,N
M>&ULI99K;]HP%(;_BA7M Y4Z<@$2J "II9JV29-04;?/)CD0JX[-; >V_?H=
M.VD$-.6R\0%\><_)\]HGV..=5"\Z!S#D5\&%GGBY,9L[W]=I#@757;D!@3,K
MJ0IJL*O6OMXHH)D+*K@?!4'L%Y0);SIV8W,U'<O2<"9@KH@NBX*JWP_ Y6[B
MA=[KP!-;Y\8.^-/QAJYA >9Y,U?8\YLL&2M :"8%4;":>/?AW6QD]4[PG<%.
M[[6)=;*4\L5VOF03+[! P"$U-@/%GRW,@'.;"#%^UCF]YI$V<+_]FOV3\XY>
MEE3#3/(?+#/YQ!MZ)(,5+;EYDKO/4/L9V'RIY-I]DUVM#3R2EMK(H@Y&@H*)
MZI?^JM=A+R#LOQ,0U0'1I0&].J#GC%9DSM8C-70Z5G)'E%5C-MMP:^.BT0T3
M=A<71N$LPS@SG4FA)6<9-9"1!\JI2($L;#I-.K-2*1"&S$$QF9%G0<N,H?"&
M=.;4SN1@6$JYOB$?R?/BD70^W(Q]@U@VN9_6" \50O0.PM=2=$DON"51$(4M
MX;/3X8^08GCHPH/#<!\7HUF1J%F1R.7KOY/OGF-ENV7 =X1DLER:5<FQWE)9
M"J/;_%4)8Y?0OC;;:3@:)6-_N^^B190,PT9TP-IK6'LG6>=8\X![E!$LE/3E
MEFRH(EO*2R =)A"><ZHTV0"^MSGN6.ON5(](]L"";A"$1_CG5 ?\_8:_?QV_
MH]2$EB:7BOW!">NC&FV%K_(/]E<UJ#Y'_!<(#RP,&@N#?[+ M"[/XP_>4!US
MGU(< ,<-<'P2>":+ O\__Z-@XHL*YISJ #YIX),KX*^NEN1M$0S:R^42Y8&#
M8>-@>+V#RXIE^(8I2I(X#.+>$7R+,$9E,HK;V4<-^^AZ=KP::$-%QL3ZG('1
MI09:A.T&_+V3S]XZOE&U9D(3#BL,#;H)YE#525YUC-RXPW I#1ZMKIGCY0>4
M%>#\2DKSVK'G:W.=FOX%4$L#!!0    ( $2( U-%_< RK 4  '<7   8
M>&PO=V]R:W-H965T<R]S:&5E=#0N>&ULI9AM;]LV$,>_"F'T10.T,1\D2@H2
M XWM;1W0-6C:[;5BT;%02?1$VLF^_4X/D6R28M,M+V)+_M]1O],=>>3UDZR_
MJYT0&CV71:5N9CNM]U?SN=KL1)FJ2[D7%?RRE769:KBL'^=J7XLT:XW*8DXQ
MYO,RS:O9XKJ]=U<OKN5!%WDE[FJD#F69UO_<BD(^W<S([.7&E_QQIYL;\\7U
M/GT4]T)_V]_5<#4?O&1Y*2J5RPK58GLS^T"NUC1H#%K%G[EX4B??48/R(.7W
MYN)C=C/#S1.)0FQTXR*%CZ-8BJ)H/,%S_-T[G0UC-H:GWU^\_]+" \Q#JL12
M%G_EF=[=S.(9RL0V/13ZBWSZ3?1 8>-O(PO5_D=/O1;/T.:@M"Q[8WB",J^Z
MS_2Y#\2) ?AQ&]#>@)H&P80!ZPW8:T<(>H/@M2.$O4&+/N_8V\"M4ITNKFOY
MA.I&#=Z:+VWT6VN(5UXUB7*O:_@U!SN]6,I*R2+/4BTR=*_A [) *R2W:"E+
MR+U=DQ1'@3Y6&UD*]/9;E1ZR'-07Z#WZ=K]";]]<H#<HK]#7G3RHM,K4]5S#
MDS7^YYO^*6Z[IZ 33\'0)UGIG4+K*A.9PW[EM^<>^SE$9 @+?0G++?4Z_/U0
M72*&WR&**7$\S_+UYMB%\_]&7__GT<^"P88<8:T_-N'O/"T^[T6=-D6NKCR^
M@\%WT/H.)GQ_$4=1'80K93I#WAHV\]UQ02C#07P]/YZ^"8<,\S *SV4K6T99
M0J+@7+9VR"CA,1MD9Y3A0!EZ*9=2Z29V]31MYR \&9CS@#(#UE:% 2&)P6JK
M"(VH*5L[9/!'(S<K'UBYE_776BJ%]K7<YMH%RFT$SJGQNI8.%0U";H#:*@!(
M0L/9VB7#X8FW,]!H (V\9=$70O6(Q#.LVTHH3SW$@]/8&[U/:?U=M$YA)D4J
M+4RO71!CBX@2'!C)O+15A"?,#**M"C $VXBAK6(A(1,A3 ;:Y ?5KT1:;W8M
M; ;%4<A],]&XD!/72^380+95,3>GC)4MHHP&Q"!V#!AQ%KJ)"1X77.RO#U%!
MWA0M<IK!DIXKW>31T3DM],[.@ (2&=0.%:$A-8A6#AF-8K/VUBX9E&@R07[2
M:A O^5>I@5O^H&QZ;N+,2F*"VS(60VV;X+8L(6&"37!;%B4LQA/@= 2G7O"^
M=]K6LGS!A^73B4T=)0N5;6([9 '4HXEMRRAFW'K?MHP1R/4)[+%M(,R+_5GO
M1 V=8=<X%K L7+Q#E7!6=^_JC(A9:6Z+(AZ9T+;H_2E,S^P8+SY)KW/DL9LA
M_G:F?],/ K9PX@5=I\\321XXWK8U$2U=,IA[S5G-(:.8Q.:J[Y QFB03JSX9
M6QSB[W'N:GG,V_TCL/\8W6X^&*/<)+=5%,A-<(>OD%.3V]%A!7@JR<=NA_C;
MG3]@,]_!.C&YHXF%J<?D=,DXME+;(8.).3));1GE83*5W&._0_P-SXB*8!)#
M:I?6PK<'(&/30_Q=SVVJ\@UZ"YO(3!9%6JMQ@ MG6#MW\0DAO@RLZ>(UJI53
M94T7L1WYB7".O0_Q-S^KO#@TN^Z?P$Y>A?T:U<JILK!=HF2B$:!C"T2Q?T/9
M$"IT4$"O)8*,VD,DFJ7AI_*+CIT']7<>8WZU3I4SNM1>_6D4L3!BQE2R="DY
MYSA(S#G9Z9-CS&.SOW;ZC$C,0SH1[K']H/[VXS31?/R.;B&*@B".S";;I>2
M%7-S;S'ADP3<XG?YC%G3?TWPCWT(]9]?N ^RFFR#+3FL4!>^'!N7?NI?^L]'
MF5X2J./ (H@3<^ESR6@2F6N?2T82,V/7#AEE261N9N8G!XFEJ!_;$UP%!7JH
M='=>--P=3HD_M&>CQOU;<K4DCOLK<K7NSH!']]V1-&Q\'_-*H4)L82A\&4$F
MU-TI;W>AY;X]QGR06LNR_;H3:2;J1@"_;Z74+Q?- ,-9^^)?4$L#!!0    (
M $2( U-/&"YQ8PT  '9D   8    >&PO=V]R:W-H965T<R]S:&5E=#4N>&UL
MS9UM;^,V$L>_BA 4N"W0-.*#*'*Q&Z"-+;0%>EWLMG<O#O="L;6QKK:52O)F
M]S[]47ZB1(XXC.-<%@6Z=O(G.1J2FA^'E/+FH:K_;!9%T4:?5\MU\_9BT;;W
MKZ^NFMFB6.7-]]5]L=:_^5C5J[S57^N[J^:^+O+YMM!J>47C6%RM\G)]<?UF
M^[-W]?6;:M,NRW7QKHZ:S6J5UU]^+);5P]L+<G'XP?OR;M%V/[BZ?G.?WQ4?
MBO:/^W>U_G9UK&5>KHIU4U;KJ"X^OKWX@;S.2*RZ$EO)/\KBH>E]CKIKN:VJ
M/[LO/\_?7L2=2<6RF+5=';G^YU-Q4RR7757:D+_VM5X<&^T*]C\?:L^V5Z^O
MYC9OBIMJ^<]RWB[>7LB+:%Y\S#?+]GWU\%.QOZ*DJV]6+9OM_Z.'O3:^B&:;
MIJU6^\+:@E6YWOV;?]Y[HE> TI$"=%^ 6@68&"G ]@68W4(Z4H#O"W"[A;$"
MR;Y 8A4@;*2 V!<06]_OG+7U]"1O\^LW=?40U9U:U]9]V';7MK1V<+GNAM:'
MMM:_+76Y]OJF6C?5LISG;3&//K3Z'SUNVB:J/D8?%GE=+*KEO*B;OT73OS9E
M^R5Z]<<ZW\Q+K?XVNHS^^#")7GWS;?1-5*ZCWQ?5ILG7\^;-5:LMZ^J_FNVM
M^'%G!1VU8K72P^Q#6\W^C/[U:[&Z+>I_ ]7<^*OY8:XMT^,U7T;O\G)^J8VZ
MR>_+5G_W5#KQ5_J^:/4,U=Z9YO6Z7-\UOKJFB(&_W?P<_="V=7F[:?/;91&U
ME3:UUB[WU9KY:_V]TE<X+':EA\%Q+-#C6*#;>OA(/3_FRWP]*Z)7VF]-U_G-
MMU'>1I-B]GW$R'<1C8F"^G97:[*MM;N5?;JF(I6")UK]";"''>UA0?:$V+"K
M2?1M2(^M[\8.(!$R[AFY&PVNC%&>4CJ435W991H3.51EKBJ12:IBV#'\Z!CN
M=<Q^NNSZ*"J;9J.'I_Y!\;FH9V53=+.WNN]F0A/I"1E5[:*HOXO6.E+IW^R+
M/93M8E$LYY&.3U&;?XZJVV5YE^]*]88 Y&WN]CA+: )?57*\JN1EKPJZDL3I
MH-@:-HESK9<JMD;#Q!59U4Q1188T-/"I./I4>'VZO:->=J%W'LVJE0:29NL+
M[=3N<P&Y1* N$8ZE+&;,<HDKLEV"*C*DH8%+TJ-+4J]+WA?WFWJVT"[91KG9
M?M1M0P\R[%.WAX@@7(Q,9WFT2)YJ$62%1/M'@G8*JX, E4J$=3N<NBJ[DZ#6
M")$C=P-U=(KR.N7O>EJ7:^T+<(PJS*H;5#%Q%80IR:WK1^O)L'H&ET]B V;Q
MMB ;<<!OW>UM.VDUA74L_ZF(EE73> (]Z5$?\7I74[EF[K4FS%K#Q^Q+U-;Y
MNEGN[@WY_#\:/#L.!$F.H.-O+_$Y'Y=, <DE5=)V/RH;NLC $/'3T,W \Z-#
M,2,N_A 2QV/];^"'^.GGQ8/\WK[ *$\,O) 7IA?P8C@^:EVJ 2(]H'(&+BK)
ML+:&KC4$1?P(=4JX)S@"$1=-@( /J!S/X!2$M37TC.$@X@>A)T1]XE*(-^P3
M0R+D9!0!#4GQGH(1Q0[]D R(_8#,Z2ZHP?'H3PP3$3\4^>,_P2&(H.0R 200
M N U96A-0R\8"")^"CIU24Y<*/&OR:GA$AJ?;56^K\J[+-]KAJ8"ZW) !R[,
M 1VT,@=DOJ4Y-6A%_6@UTF6_YO7!5S0&?>5R#!6"RX2.C"+:R^N$)7:"S* !
M709E?+3SN-UEKHY115AJ=YFKNU1*.5WFRA*9IGRLRPQJT;!$TZ,37P A^6>9
M@23JAZ1'S3*7;=PN U(VX"QS=? L P &FF6NS#O+#.E0/^EXPT-&78B@(E%D
MI%5#$52<>TU&#0U0/PV$+CBH&W(I4^E(Q*4FXM(G1-R,NA'.YU(3X>CS1#CZ
MV C'3(1CYXMP+"#"L< (!^C@U'-8A -DOKG'3(1C)T6X7S9K[:MX/+0P*,*E
ML4@2,6*2B7 L.,+A9@1$. 9$.-T1C-A=!D0X)D5OD;SO,BC""<;M+G-E(B:4
MCPWIWD[*21$.I0$&13@?E# 3X5APA,/-"(AP#(QP+I0 .A!* !T$)8#,!R7,
M1#CVPMLAV+J7N4%4"2+'YJH)HLR_%'^1_ _#=S68N\[GL;UD!$1VD@.79$A3
M0\<:@&!^@#@E^\/PG )S>8,)Y@0O-%<PQ249UM;0,P9MV,D[+.@L +8WF"3)
MV/W/@ _S@\\CDS_[VKP=Y2*1-M5.8((J0NS<#R!S.@NJ*8E'D) ;_N)^_O*G
M?KB+-;8C<,D$D! J8CL(X#5E:$U#+QC*XN3<:PUN>(G[>>D)^S_^FKNC<*^;
M^WQ6O+W0AC=%_:FXN(Z@LSS<A1VGEU#)%) P87,5(AHZT4 51W=H@A9LW(4H
M0E4Z-D]ZIT"^]F,@+OMX"($;].%?X4D0CN^#<)>(7$( 1,Z8Q;=!D*:&CC7H
MQ<]_'(3CY,2!<QHN(0 JQS$X.F%M#3UCV(D_VZD0#FR!> B!&VKA9ST7PO$]
M$0["C$T(H,HE!$#F=!94TS@A&';B3SD<PG%4XOCQ$$ "$@+.26A-P^-RAI.2
ML#S58Q?U"92/\BWJ$P,M25AJ*,@,]R")LZA/H)01L*@'=."B'M!!BWI YEO4
M)X:[DI..V*(YJP0\8^M)G26&8I+@4[:X&0'';!,@902ES@ =F#H#=%#J###-
MESI+#&4E87FJ\03UB*^@?%2:BE0)V_0 Y=#XWI%:/TG!J>P1@UT <CL7V%B1
M7/]G=RYPBD-0%1.[<UW=)>/4.1KKFB8X9Z.#WP!1\L*Y* P>$B 3)%4R=I3:
M\$R";B:]P&%J/)F4 +!$E1U[ 95SGAI/)F%M#5UKL"SQ8QGHVLY#/VUNM3-G
M?VW*9OL8"MKW+AU)C;)JK/,-'B5^/ JV$+3*I2=B=R( -$*'(^<N@++1%)=D
M8ZV-W-F%X2?AYZ>3#L>[^WW.Z7A@WTW8M[0)H'+.Q^/))ZRMH6<,Q@D_QCUA
M-21\!WN'YAAJ$GYJ>N1"2+@;?$X?X;DG7#+%)9E7,G2'(3;A)S;_ZD>XO.1<
M/2J9 !*6$GLG&J\HPRH:^L!0F>#GSHX*0TW"3TU/R(X*-+5S@TLFN&0*2"Z%
MY-1V/R8;NJCW7)$?G+HQN%G71;XL_ZMOGW=YV;%.UP,='VLWE>M/Q<Y-3?=P
M:%-H9^J84X#@( *>.4)30Q-<,@4D.I;8/O.+AAXS1";.<[Q'@-0REJT6!EO$
M"=CR_T1=X>*.!W6%H1UQ NT\-^H*/,<D@.TQ%W4!E3-H<4;"VAH^*6<(*3T_
M(:4X(:5!A 2H;,_@D@QK:^@90TCILQ%2&DQ(J2&D]*R$E.*$E.*$A$NFN"3S
M2H;N,(24/H604C=5Y%P]3DB !" DO*(,,&><D%)#2.GSY*W2X+Q5B')HO"&P
M]'QYJS0@;Y4&YJT '9BW G10W@HPS9>W2@U^I7[\"DC]$]!7+MK05$B5\C&3
M>H]5^_EF)/4/F^$FBJBTN\SE()X(*>UGF0 =$T(09G<9]*12'+NCVK5-$L;9
MR*95:@ L]0/8R1,2.GD-3\@ Y=!X UEIV#'M((-=-G(G)'!\&YR0K@Z>D-!9
M)&!"NJ;Y)J0TI"2?<&8ID\ 9(2'HR Z@-!0BSWY&2!JFD.=Y %I"#T K-A+
MI GB\@E!/)-NU/2YU(1-^3QA4P:'S1#ET'@3-N7YPJ8,")LR,&P".G"6 CIH
ME@*F>6>I"9ORI+#9W_<$XY6$PF8J2"R8;7J <FB\"; R.,#B!@<$6 D$6$$2
ME=J="P385')A[ZT#NDM)2&)["(BOC*AT;.;VWJ)R4GQ%840"4=/+1-)$31D<
M-7$S@*CI=)D;Y4 F G0@$P$ZD(D G8^)E F;RA\V7SPII=S(+!-&1@:C,I%9
M^?,#+Y*44OBK611P $;:1S, D;VPQR49TM30L89*E)]*3DE)*3S=H5R(X8H[
MCL$S'K@DP]H:>L;PDO+STA-24@HX8T-X/';@5!F:4GZ:>F1>2N%O:5' 8UF$
MVV=-054L;!X!9$YG0351,N89@VK*CVK(^ZWP;21<,@$DA"H[(D_QFC*TIJ$7
M#)"ILS]0K0PP*3\P/6$;3Z&G2VYPR0273 $)C9GC?D0U=) A)H4_\7V^33R%
MGS]6^#M9<,D4D%S:=X ,$0T]UGLI';K7%+0F5L"9%2['%G@:N8X&=)^_:F(Z
M&!B(3"3NO90N_@JAZ6"4]UU"<0@V02I[[ 9H,JPUR[^]-]K%YV>G0YU^]P31
M$R1S_8/S$]J<Y:#>*_?B9T.H0]6A#$7BW@OSXK-2U*$Z?Y<%<10L<T$*TKG=
M]BB4(G'OM7?Q4V#J4-KO#QRG( W$4P%U97A=EC-Z;[J+GV=OZ%!O>"*$Q+U7
MW<7GVQXZU.7-A1Q$:#($$H+9$$@(ID,@^WSY$!+W7GL7GY3%0C-^AWH#<I1!
M4NL">F^LBX-S7@%&!R2](!&8J(2$8*82$D*I2D@'YBJO>G^ H?N+''J$WW4L
MO2P^ZH+Q]]T^<+W[&Q>[+VUUO_V;#+=5VU:K[<=%D<^+NA/HWW^LJO;PI?LS
M#\<_-7+]/U!+ P04    " !$B -3:.>"!>8&  #E&P  &    'AL+W=O<FMS
M:&5E=',O<VAE970V+GAM;)6977/;MA*&_PI&TXMV)HH(@%_*V)YQE&9..M/6
M$Y^TUS )63@A"16$9+N__BQ(FI2(#SDW$DDMP!>+Q3X+X>I)JN_MCG.-GNNJ
M::\7.ZWW'U:KMMCQFK7OY9XW\,M6JIIIN%6/JW:O."N[1G6U(E&4KFHFFL7-
M5??L3MU<R8.N1,/O%&H/=<W4RT=>R:?K!5Z\/O@J'G?:/%C=7.W9([_G^MO^
M3L'=:NRE%#5O6B$;I/CV>G&+/VQH;AIT%G\)_M2>7",SE <IOYN;+^7U(C**
M>,4+;;I@\'7D&UY5IB?0\<_0Z6)\IVEX>OW:^^=N\#"8!];RC:S^%J7>72_R
M!2KYEATJ_54^_8</ TI,?X6LVNX3/0VVT0(5AU;+>F@,"FK1]-_L>7#$20/H
MQ]V # W(O$'L:4"'!K0;:*^L&]8GIMG-E9)/2!EKZ,U<=+[I6L-H1&.F\5XK
M^%5 .WVSD4TK*U$RS4MTK^$+YDBW2&[1AK4[]!GFN44_?VO8H11@\PM:HF_W
MG]#//_V"?D*B0?_=R4/+FK*]6FG08WI=%<.[/_;O)IYWI^AWV>A=BWYM2EZ>
MMU_!.,;!D-?!?"3!#G\[-.\1C=XA$A'LT+-Y>_,H((>.OJ5=?]33WY][KI@6
MS6,?K$(+W@:ZC<=NXZ[;V-/M'["X15/(FKM<WK=-N[9F#1]O<)J2[&IU/'6$
M;4729(U'JS-AR2@L"8[WMOP?!&P?/UK"(B]D4XB*HV94;)Z;N\+$UE[)HX"9
M1P\O2#I\]2'@K'34E :=]8E#=BL$ZW-&4R)62Z7%O]T#E__Z[I)3ST38\I]M
MA9,\2=S^RT:M65#KO9;%]Z5)2B4"9T&F;GO=_-E<.Z<[LX5$28IG<FVK-,V(
M6VT^JLTO>';+E0*IFCW/X[K7EEMOC?%ZILRV2=+$$X?K4=DZJ.SV9(I-(@,^
M?>>:/4 DMKPX*,="[ 6O[;FW7&G;8+)VZ\71E(2CH.*OG%7B7_#E(X 7F4@]
M,E$9Q<N6F8^@[*'S4TU+C.<AZ["*/+I/X(&#NC\SH="150=N_ S+W:Q@6/_F
MLH6EK;S+;.CX3'.6I70NVC;SB2:3:!(4_:?><>741!QSF\P5V4;+/(D]HB94
MX# K-CL&GFL-44]28=MRR*4F;56"/8CJ8EK$$T1PF"*W12$/)E-#>N3B:&+-
MZ9/8'BZA9)W.W>*PB\G:DV/PA!2<!&5^:8X03U+Y0C^QIRRSLK7#:IE'GBR#
M)[3@,%ON%-\S4;ZFYWZBI#>Z',S(<327:ELM<93F'JT36G"8+5\&_/IR-;81
ML8PC;$6_PPS3V.?*B24X#),Q&O?LQ1N*#E9$>)Z?'58XRGUQ."$%7V!*4:@#
M/UN'%Z;;!L4RB_.Y6MLJR=;4K99,/"%AGOSQUA++I9S8H"!11N;D=I@E$ F9
M1_O$%(*#F="L^/;M53.9\CX)Y_V[@RIVS*Q38!4X!MRA7]XA_L]![$W1.LTG
M^&XO-*N&!.QTD@,#A*YM+SGL**61IU0D$S (#8ZFVYT=3*D(>WEP%8RB%8:V
M[;NNPC8\-B;=+VJ^O1H&01VKF60QGF/88>C!,)D 1,( .IN.WNTGO!-=%'1[
M":=R&S?S3.HP6=(H\NF>B$3"1#K3_>;2DC@0A!.<6/'BL$LR@CT)C$RP(I=@
M)0O.RQ9ME:R1J2I_<  VF.(L7<=S_;:9S^,3NTB87>?2:Z8'F3^FW[%3HIE5
MWCG,2$Z(;[E.@"-AP(T9N5NR4.6)BVENT&WS# J"Y!1I@W*'89IX2S RH8^L
M@PGYLV@8[./?FI#I1"D:IM3YO/)GK@HQK*O6;(6!6%U"<[F%VO2A.9WCU6%%
MO-MT.B&*AK<]9RF@W3$%5T]"[W:\ZM,QE%E(/E3BD?D'X-@ Q22:YP.7&:6I
MA[)T@B$-P_ KWY\. HK#&K:=G=N=:AT8P\2J7IUF<9JG'KDG_Z2%:7>G!(3@
M'I!L:NZ7\3_*;1>;'%4<1G+1Y0[<D6R> 1Q6G@Q&)];1RW_9G:W^[<4U-4AV
M0 SGR7SWY31+\-JS;: 3[&@8=K]NM[SHB@G^7'1;5 0U)$?%L%V%F.FK#$!V
M=V&JJ2/ Q<-M:N,ML389#B.((L^?+'0B( T3T$Q"R0O5A8KX4>&.?1G,@\4_
MEQW)"/%D83I!D(8AN/&I?8<>^*-H&A-,IK#E2DAGM4<=!"19&LV+/:==XF4@
MG1A(PPP,#(&;TCLH/K?^L8[QVDZ7MMDZCZ+YAFIU<F!2<_78G2.UJ-N#]L<-
MX]/QK.JV.Z&9/?^(/VSZ$Z>IF_X ['>F8%9:R$Q;Z#)ZGX$_57^FU-]HN>^.
M91ZDUK+N+G><E5P9 _A]*Z5^O3$O&$_V;OX/4$L#!!0    ( $2( U.8)<[Y
MV@,  (8(   8    >&PO=V]R:W-H965T<R]S:&5E=#<N>&ULC59M;]LV$/XK
M!PT86B"3;"=]668;L).EZ[!N1M)L X9]H*63180B59**X_[ZWIUDQ4%3;X!A
MD=3=<\^]\$[3K?-WH4*,\% ;&V9)%6-SGF4AK[!6(74-6GI3.E^K2%N_R4+C
M416B5)ML,AJ]SFJE;3*?RMG*SZ>NC49;7'D(;5TKOUNB<=M9,D[V!]=Z4T4^
MR.;31FWP!N-ML_*TRP:40M=H@W86/):S9#$^7YZQO C\J7$;#M; GJR=N^/-
M^V*6C)@0&LPC(RAZW.,%&L- 1.-3CYD,)EGQ<+U'OQ+?R9>U"GCAS%^ZB-4L
M>9M @:5J3;QVVU^P]^<5X^7.!/F';2\[2B!O0W1UKTP,:FV[IWKHX_!_%":]
MPD1X=X:$Y:6*:C[U;@N>I0F-%^*J:!,Y;3DI-]'36TUZ<?Z[BPAC^ &6*N@
MKH25QX V*@[:-(MD@R6SO,=;=GB3;^"]A@_.QBK S[; XJE^1MP&@I,]P>7D
M*."OK4WA='0"D]%D? 3O='#X5/!.CS@<(#JXTE;97"L#-^0L4J'%< 3_;, _
M$_RS;^#_X3?*ZL\2OA.X<#8XHPO5E: MGH27P_T<#;C4(3<NM![AGX_X$&%I
M7'[W[W/I.,J&K_1Y:%2.LZ1AP_X>DWW./U8(K55MH2,6H&U$K^L#QG3X+#FI
M$4<1_$VMPPF\MWD*+^3$R$$DW M7-\KN3F"+)]"2C@?7^I=0J7N$-:(%HM,H
M+X;I:N;.%V0)J?IC)?O61FTW)*:)0&,H9QNTZ)4Q.WZ/34=:K-U:<4$X"K]%
M3;[D"E[<IC<IO%LL5B^!&MC@9#GXI6W7V/;I$?N,J6V(OI76T94+B<%XQ+^_
M4[ NTBW<20P[3X:$LO(C?GB,&Y'-G9C3<=<9&NA1?_O4:LH0H5IJAJS!5FMU
MAX AZEI<8X8J4 -M>EZ5BJ#*DEJ<V"4FSG,H5,T!E%B0/$9*B]%JK8V.&FGC
M\1YMRRM\H/X>>,7@'8B1Y!=#$9+A#I^KXJB/C%&TGC/WR$?R2'%W10J+/+:D
M0IC4-@,%I#4%L'->2VH+3=YX*+VK&2$<>)]R#J!L/9W[P\2Q.ZQ$\6*C^XK^
M[TIFMGT_($@D?2HVTQ:/E=77\???O9V,W_P48&$MT[\6OX 2OB^+2\RQ7A.)
MT[&TJA%<X=JW-.=@_&/7O%*I%JYMP>2H/*&X5$:NP(T,8R7)^QJ6*Z\KPZ\,
MP'/M*SN8#70K-C(!)? V=F-B.!V&[**;+8_BW83^H/R&K@48+$EUE+YYE8#O
MIEZWB:Z12;-VD>:6+"OZ4$#/ O2^=!3L?L,&AD^/^1=02P,$%     @ 1(@#
M4_9L=Q== @  ,P4  !@   !X;"]W;W)K<VAE971S+W-H965T."YX;6Q]5$UO
MVS ,_2N$3SMT]4?2CQ5)@*1=L1;H$#3==AAV4&3&%B)+GB0WZ;\?)3M>NB6Y
M6*+$]_A(FAIMM%G;$M'!MI+*CJ/2N?HFCBTOL6+V7->HZ&:E3<4<F::(;6V0
MY0%4R3A+DLNX8D)%DU$XFYO)2#=."H5S [:I*F;>9BCU9ARET>[@612E\P?Q
M9%2S A?HOM5S0U;<L^2B0F6%5F!P-8ZFZ<ULZ/V#PW>!&[NW!Y_)4NNU-Q[R
M<91X02B1.\_ :'G%6Y32$Y&,WQUGU(?TP/W]COT^Y$ZY+)G%6RU_B-R5X^@Z
M@AQ7K)'N66^^8)?/A>?C6MKPA4WK.[R(@#?6Z:H#DX)*J'9EVZX.>X#KY @@
MZP!9T-T&"BKOF&.3D=$;,-Z;V/PFI!K0)$XHWY2%,W0K".<F7[5#R. C/"-'
MY6#*N6Z4$ZJ N=&*]ARI!\Z.8D?A/"CF'?6LI<Z.4%_"DU:NM/!9Y9B_Q\<D
ML]>:[;3.LI.$CXTZAT%R!EF2I2?X!GWN@\ W.)&[!:?A7BBFN& 2%HZY0_F^
MXQ_V_,/ /SS"OQ"%$BO!V3]UU5)P09%_ON#6P4QJOOYUJ+PGV?VTWMB:<1Q'
M-(X6S2M&NW:VS91O,,UU[3 _WE9X4'!'WM42#=4U_706OI!F9W3%=87PPK8D
M]L.+K@6'JV&R<_AO[7G2B]"CI.>"1Z8:FGE(V^:!TG"HP/'>CURA*<*X6@C:
MVW^Z/^U?A&D["'_=V^?DB9E"* L25P1-SJ]H $T[HJWA=!W&8JD=#5G8EO2J
MH?$.=+_25,O.\ 'Z=W+R!U!+ P04    " !$B -39!5)@EH$  !3"@  &
M 'AL+W=O<FMS:&5E=',O<VAE970Y+GAM;+562V_C-A#^*X2PAQ90;$EVY =L
M ^ML%MT%-@@VV_90]$!+8XL(1:HD%2?_OC.DK"C9Q$ //=@BAYQOOGF17!VU
MN;<5@&./M51V'57.-<OQV!85U-R.= ,*5_;:U-SAU!S&MC' 2Z]4RW&6)/FX
MYD)%FY67W9K-2K=."@6WAMFVKKEYVH+4QW641B?!=W&H' G&FU7##W '[O?F
MUN!LW*.4H@9EA5;,P'X=?4R7VRGM]QO^$'"T@S$C3W9:W]/D2[F.$B($$@I'
M"!P_#W %4A(0TOBGPXQZDZ0X')_0/WO?T9<=MW"EY9^B=-4ZFD>LA#UOI?NN
MC[]!Y\\EX15:6O_/CF'O9!:QHK5.UYTR,JB%"E_^V,5AH#!/WE'(.H7,\PZ&
M/,M/W/'-RN@C,[0;T6C@7?7:2$XH2LJ=,[@J4,]M;K0#-F$7[ 8+X(LJ= WL
M%@R[TG6-0;NKN('5V*$EVC\N.M1M0,W>0<W9-ZU<9=FU*J%\J3]&ACW-[$1S
MFYT%_-JJ$9LD,<N2+#V#-^G=GGB\R1FW+7.:?1:*JT)PR>X<=X#EYNP9_&F/
M/_7XTW?PK[E10AVLCZ4/(OOK!SPZMI6ZN/_[K8B>!:3>7-J&%[".L/DLF >(
M3LG;<BL*IC"!(B2P0:/6&Q66H:1I'92^>$N&2745L*,O5R@O^ ,8[#ZFVGJ'
M:GI/"I1Z#V 9-K)U7)7HS8A]$M)#_?^V8L+'4X9@=D\>YEF+EZ6@GL:L=9JN
MX@[[OY4EJ] *VP&H(1Q*2]9@N)3#7,LG5I(G>!Z\8N#UA+4MFD5-/';*MGB+
M0F\7J%4:KIX0J3=OH&E-47GV>Z-KOZ\QN@ H;9"0$:P\(#"_^A:Y8&7$;M]?
M'$;186U1W&1;0C?3#07*QDC).B,*2DY8:95PMG/RU1(_<H,\#X8K$K;8Q"8L
M783$4I[Q8.;^8&TD5P&H8T1TA"--;+ =NM;'(B"1NU W4C_!B>9IBP<;4=?X
M^X;B\X(MEAD\>O\&@2VX+%H9R& T^@#U(7V5Y!:%,@1]8*?0*E25'900N6CW
M LH1^X'['=])6L&KC%E 0JCMJD#"EWY/8N=[DH)2GNF9):(:#,+PM&1WXO&E
M  \_\(=?/_A%4&?IUJ(!S"V&!!K7M2'9?&Y*7FMTU_[J#T[Z2P:CFV=*'UB:
MQ8OT,@SR9$:#/,XS&F1Y?+E(NW/FXN=^_KE]ERR;Q;/))?XR4L_S))XNYB3-
MDR3.YU.2SM)YG%]F['J_QTOZ1>XL%*W!=(!=LNN7M=*5M'=48^@-6\3I9,Y2
M!)[D^)TF\6R>L#1=Q-D\[P^M_T!\.HWGL\131.+S/ _2-)[FGOA\,HL7:/+F
MS9R&.'U@R6@Z&W[RA((Z2I*>TCM[DM%BP=ZZA<:#B[X&<_#/&6HXS'&X\WMI
M_V+Z&!X*S]O#<^L;-P>!492P1]5D-+N,F E/F#!QNO'/AIUV^ CQPPI??6!H
M Z[O-;97-R$#_3MR\R]02P,$%     @ 1(@#4R1@4I?'!0  7@T  !D   !X
M;"]W;W)K<VAE971S+W-H965T,3 N>&ULE5=9<]LV$/XK.ZJG369H221U.;4]
M8SM)DTP.3YRV#YT^0"0DH@$)!@!]_/M^"QZ6STX?3)/ [H?=;R_H\,K8[ZZ0
MTM-UJ2MW-"J\KU]-)BXK9"G<V-2RPL[&V%)X?-KMQ-56BCPHE7J23*>+22E4
M-3H^#&OG]OC0-%ZK2IY;<DU9"GMS*K6Y.AK%HW[AJ]H6GA<FQX>UV,H+Z7^O
MSRV^)@-*KDI9.64JLG)S-#J)7YW.6#X(_*'DE=MY)_9D;<QW_GB?'XVF;)#4
M,O.,(/#O4IY)K1D(9OSH,$?#D:RX^]ZCOPV^PY>U</+,Z#]5[HNCT6I$N=R(
M1ONOYNJ=[/R9,UYFM M/NFIE9_,198WSINR484&IJO:_N.YXV%%839]02#J%
M)-C='A2L?"V\.#ZTYHHL2P.-7X*K01O&J8J#<N$M=A7T_/%GXR7-:)].&X<M
MY^C,E&M5">;,'4X\SF#)2=;AG;9XR1-X"_ID*E\X>E/E,K^K/X%M@X%);^!I
M\BS@AZ8:4SJ-*)DF\3-XZ>!P&O#29QQVY V]A9-5IH2F"R^\1*)Y]PS^;,"?
M!?S9$_B/\4BOE<NT<8V5]-<W>>WI5)OL^]^/T?LL.I?H*U>+3!Z-4(-.VDLY
MZF/XI:(/HFI06I0D+5\1I:_#"S^P]JY9.U(NY'%.JJ*3TGEI<U%&]%GZ0EHM
MJMP1'BPF2*/.5;4E$RQ!XE7-!H746%ZLM?#<%L@7PE-MS:7*P6V;M=(ZI+(O
MH+J?HY$ 4609$P/N!6VU68/Z2GJN6C(;Z,M2->7],X3U%;#&]*V00/C1**<"
MI[(J$#^.)39 =BVJFY]_6B7Q\E='ET(WDDVJ32>^OB%Y#9G@#JOT9N+LC>2S
M7 1,L=:]0(?)]I8&D2N,5LZK3&A]0X%Z4G['W=;$C5"V.QY.A8-02"#&MJE0
M"Y436,,6,[SC4"$0&"G1J32R RF9$[<M)D8KE#X'%H%3@4$&%LY)&% W-BM"
M0)EDK<1::2""&0@T)=;;< ,,6K!.PHLRX-\:R\*]P;M&Y9"+VD R%_(ZA-#*
MS-B<3W2T-2:_4EJW[O=??+9!=?$I0?L^L)4A@5%TM#;=OO,@26Y5%CS9HO(X
M?^K:6-]4K4L(HU/;2FT0A\KK_PQJ9_K_3;3!#7 ??.@IW_$ @:B,#^)]JMSR
MPE'WP(6#]Q*@#] -V[(7I^,%^KK6840]&8);NGI/'POBH%V:AHFMQ0WR6;+Q
M7*>@Q17"2B0RK$&Z\WGMG,ZI0;^V01L-H1P,@=(6ZV)K96B1T0#JFO4_&*T]
M,P[>.::336:6I0U7!I3H?IM_7@ *5N4MX1OT1'2 &RGL;HO:2^;C*<6S-#I8
MI?A:CE>4HMQ 8M[U-&8<9&#N!C-#4T/3S60P)-"%Y;NEA6(-M04QW>1]4IY;
MXXT6:_=+#SCFM<"6H'SHVFZWEM$&\D#\C@V[_6)(]TVC._\DLC&[M38PKQY&
MNA"HTBQKK&W+M6_G<>CFF(&<;_W?_7YXVSZRC,,OVS9S&]==X1+-WN0M34&:
M(Z):78P#YC*X<7)Q1JOI/'K\>G W+)C4<IC4[7-,+Q1W'=,XGBLOZ63'AI.V
M?06SX/ K.F/'42]=7]NC))H=+.E]Y46U59QSW0X.62ZG]%M?I,DJCE:S.7WA
M"4;:5-M]3N)>/([B]("^&2]TO]0?2FF\B))Y3!\?MLU;@YZLY64T/4@'L=W6
M.X\6BP5]'$QY$F(1S:?+'4'<*&6(OQ?7=Q"3:#%=/7#QCL1\WGGYV!! <<7)
M 8_Y!R0D!S/L)70F7-$.J#A-P>BR71GD7BRB63JCEP$DXZV[OL3),IK%*;V!
M//H;]^V^&W0S"LU7(;?BQ2):3ON8#)MWT?8&NQZ[EDUV[KRA2?'-'M.8D[F]
M_@ZKPX^'D_;.?"O>_O+XA,:DD,U:;J Z'2]Q5[?M;;[]\*8.-V@,*DR7\%K@
M8B0M"V!_8W #ZS[X@.$GU?&_4$L#!!0    ( $2( U-0-!_R]P0   \+   9
M    >&PO=V]R:W-H965T<R]S:&5E=#$Q+GAM;)56ZV_;-A#_5PZ>,;B :DNB
M)$M9$B#I:QW6+DC2]<.P#XQTMKA(I$M2<;*_?D=*?L1)LPV&;3[N?O<^WO%:
MZ5M3(UJX;QMI3D:UM:NCV<R4-;;<3-4*)=TLE&ZYI:U>SLQ*(Z\\4]O,XC#,
M9BT7<G1Z[,\N].FQZFPC)%YH,%W;<OUPCHU:GXRBT>;@4BQKZPYFI\<KOL0K
MM%]6%YIVLRU*)5J41B@)&A<GH[/HZ#QQ])[@=X%KL[<&9\F-4K=N\[$Z&85.
M(6RPM Z!T]\=OL&F<4"DQK<!<[05Z1CWUQOT]]YVLN6&&WRCFJ^BLO7)*!]!
MA0O>-?92K7_&P9[4X96J,?X7UCUMFHZ@[(Q5[<!,&K1"]O_\?O##'D,>?H<A
M'AABKW<OR&OYEEM^>JS5&K2C)C2W\*9Z;E).2!>4*ZOI5A"?/?VL+$(*K^&#
M4M5:- UP6<%OMD8-'Z7E<BEN&H0S8]":XYDED8YQ5@[PYSU\_!WX##XI:6L#
M[V2%U6/^&:FZU3?>Z'L>OPCX2R>GP,( XC".7L!C6_N9QV,OV&_ *G@O))>E
MX U<66Z1\N[0WD?XR18_\?C)=_ ?N?6)0^&M,&6C3*<1_KC&>POGC2IO_WS.
MT2_*<;5[9%:\Q),1%:=!?8>C37"O:X2R)LEDJ9!@W99K_2#D$GBK.FE!+6"Y
MT;3JM+MQ9$;< WD<MQZ'B0=0G2%[S"NX(H+]"!]0G_.&G(K C9/@$&]P*:1T
M^,/!"K50%8PABO-@GL9[B5A^ZX0FS#V%!NHXCX(\28$*D\I.4J%HC;)\ *NY
M- WO"[[ZB^K'!Q(F+$C"#%X]HQ%28 YU2<)Y$!713A<A2VIYAI09D^QI3J78
M-$[(B\[Z\8><9<E/49A-T_W@\S[XRE>9I<CLG,_M <9;++&](3H6^9/P7^^_
M&%QT#7SU#8DT/KM#3?WU,'0?M#(&SLJR:SORF"-LE;;B[]Y[G^E!^ \DOXI%
MC_R 7!/J(-P?7Z)[%9Q[]@B>NF$M; T+(J1D;:A%FR/XQ/4M6I^?/<VX8"&,
M)UDVIQB.XXQM3\A@.F%1"%$X#2&FV'Q6\G6IVA42(%]J],4,><I@$A<.($TS
MB.<A;5E.6Q836T@],*5?-F5PI19VS:DF+9:U5(U:/D#$@C@N8)($C#F1>9 7
MQ?:4!1FEXRLH@C1/>DWF]-T"K<A][@4EL4'D)$=!F!?$$&>TB$BV^WB^8IK!
MM>852MY2P;(LA4D:.36C9*!CWM ,WOCW@6*OL<]Y4XN5H4H*XB*&21;,F6-,
M@S2+"#P(G>245'65D 1)G'BHUR33 3*X5I:[9#\,T1C2),A908L)F1QESE8J
MDRC(Y@DM8@(K^MLPB)+"WT;DJC1\)N![Q<3"_UM+$=G]Z&;ZM 2FA$%A/T#P
MQ?$4V!T'\,Y8T?H4YTM*F66_W,]VO*=!R*"? :AC#'W4-QZ[ZZ=WO.EPTT\V
M_,[VITYU+\*&'^_[!@V:N_=(&->@%JJAF8G*X:!R=[H^*L=W@X*[LO/VC8$"
M1BE+FQBR($X+MV2T#%T9A"X)*+:Q6Z:TG%/,Z,6@""TL^33**5_F0V;@SDO/
MN6:;$<\]G+.](85R=NE',0.E>W_Z>65[NIWVSOHA9T?>CXK4'N@5,=#@@EC#
MZ9R&*]V/7_W&JI4?>6Z4I0+QRYHF5M2.@.X7BE[&8>,$;&?@TW\ 4$L#!!0
M   ( $2( U.ZK'W]7@0  .L)   9    >&PO=V]R:W-H965T<R]S:&5E=#$R
M+GAM;(56;6_C-@S^*X1WV O@UHZ=UUX:H"]7W W7K;OV;A^&?5!L.M9J2SE)
M;IK]^I&RZR1 TR%(HA?RX4.*I#3?:/-H2T0'SW6E['E0.K<^BR*;E5@+>ZK7
MJ&BGT*86CJ9F%=FU09%[I;J*DC@>1[60*EC,_=J=6<QUXRJI\,Z ;>I:F.TE
M5GIS'@R"EX4O<E4Z7H@6\[58X3VZK^L[0[.H1\EEC<I*K<!@<1Y<#,XNARSO
M!;Y)W-B],; G2ZT?>?(I/P]B)H059HX1!/T]X156%0,1C>\=9M";9,7]\0OZ
MC?>=?%D*BU>Z^E/FKCP/I@'D6(BF<E_TYB-V_HP8+].5];^P:673<0!98YVN
M.V5B4$O5_HOG+@Y["M/XB$+2*22>=VO(L[P63BSF1F_ L#2A\<"[ZK6)G%1\
M*/?.T*XD/;?X33N$,9S C9 &OHFJ0;A%81N#%'IGYY$C*RP;91WB98N8'$$<
MPZU6KK3P0>68'^I'Q*ZGF+Q0O$S>!/RU4:>0QB$D<3)X R_M74X]7OJ&RQ:<
MAANIA,JDJ.#>"?>:OP?XPQY_Z/&'1_#W(GDM;59I#J:%OQ[PV<%EI;/'OU^+
MZMN@W3E=9)ENE)-JQ9Q5+DQNX4KGLI"9X#0/7S](F":Q_[K2(%(";>$S/F$%
M@Q]_F":#Y/T?#1G(N\6D6_Q]:=$\B66%, "E7;>==MM?E=X)* T/)1*7>BW4
M]B<+PEIT]*=RJ*18RDHZR7$OA0-AD"KZ>R,-V:236!*EEFL.VD#>AHTF)%NP
M/T_>'ZYBTLL:8S@"5(W2@E19U>0(F;"EM^8'#$Y*?*0AN6L>T7F:EK5;)EY6
M^V"2& ^MS-'X,)[N.^/=G;RW+;*7L^29+HB!>J0>L-964FL\KK/'9N?HH6\=
M+*/66N&V(PUUXQK*T*)1^:$%LNO04$OP0<6#.!6\8I%B\X36^<2&QG+,NE.G
M3P*IARMT19V9][H(^?8L_R78HB^0E\/T7E-!8E^0<(T9UDLTD [\2OR_^S]+
M1?QT8^D$["\]I2[W7I+LZ/JN;"\\JS.X.G;T\ Z&<3B>#6EPTGTG29@DHW[A
M]DBP81 F@Q$)G,!H%*:3J1_>OII)@TDX&U%$9V$\B[T<?QZT(ZQW,)J%TW%,
M@VZ_M3Q()N$X3GL>.Z\^[ZJ%7#N2H'L.C<)Q,MN;[RP?E_BDVIR1AE*.CRD\
M2"VJ,6URSM&C%=(7]983F<%$1H&G0N#-G/HII\K'9FD)C=X+%MNVY25K;F(6
MUF+K0TD=@)\7E".VI-90ZHJL4-URNK7OB!SH2&B?M3GK;9?C5$UF1>MB16V-
M\SSL06VS_(>N?@9G04NL;2':MP IK]'X)XW*\(2O=>I#@J"(5=[X[E)0$Z(H
M;E&8-I'I)PDA?>V&B/8N8,^(GQE4^^QF>Q?WJ_U+YJ*]P'?B[3.(,FPEE84*
M"U*-3R>C $S[M&@G3J_]=;[4CAX'?EC2:PP-"]!^H:F3=Q,VT+_O%O\!4$L#
M!!0    ( $2( U/VV'!V700  "0*   9    >&PO=V]R:W-H965T<R]S:&5E
M=#$S+GAM;+562V_C-A#^*P.U*+* 8NME6\[:!O)HVA2[1;!)MH>B!UH:6T0D
M4DM2=MQ?WR$E*TZ0>-M##[8XPWE^PQERMI7J41>(!IZJ4NBY5QA3GPV'.BNP
M8GH@:Q2TLY*J8H9(M1[J6B'+G5)5#J,@& \KQH6WF#G>K5K,9&-*+O!6@6ZJ
MBJG=!99R._=";\_XPM>%L8SA8E:S-=ZA>:AO%5'#WDK.*Q2:2P$*5W/O/#R[
M2*R\$_C*<:L/UF S64KY:(F;?.X%-B L,3/6 J//!B^Q+*TA"N-;9]/K75K%
MP_7>^K7+G7)9,HV7LOR#YZ:8>ZD'.:Y84YHO<OLK=OF,K+U,EMK]P[:5C<EC
MUF@CJTZ9Z(J+]LN>.AP.%-+@'86H4XA<W*TC%^45,VPQ4W(+RDJ3-;MPJ3IM
M"HX+6Y0[HVB7DYY9_"X-P@1.X3-3CVC8LD2XPZQ1W'#4LZ$A'U9RF'7V+EI[
MT3OVQO!9"E-H^%GDF+_4'U)L?8#1/L"+Z*C!WQHQ@#CP(0JB\(B]N$\X=O;B
M(PEK,!*NN6 BXZR$.\,,TD$S^HC]I+>?./O)._9OQ :UL=;@SWM\,G!1RNSQ
MK[>0/&K(=N.9KEF&<X_:3:/:H+<OUWV!<"FKFHD=<.=0TQ=T(94Y-:@J8"*'
M4HIU1ZU19#L?JD;PC->L]"&3JI:*$G>BTA2HZ#0O#>B^^@,XUR!70"7 O@1P
MA1E62Y*.0\<A_HHK;=I=(<WWY%_MGU#@II"-ICCT!TJ+3#T(&C E_QMS^(4&
MBSYD?)):4P6O&5?PE94-PL/@;O"<VD$"\".Y\*?CE!9)3'\GX00^=-QI0K[V
M&+S*',*I'XPC(,V3:$HJ1(=!V'I:RPTJX2K<XOI"T1\% ;73262U_&2:PB4J
MPU<\8_;@$9PYUE)S,S0TW/:$AI$?4T2CA'1'?I*D<"\-)5,]M^6+O)*Q/XT2
M6H3CD4V,%&QBR<0/DK<P_Y]1'OE!8 %.'<I1"S(QTV,@)Q$%FT(4TB&@WP?+
MB(CQ+U!.'<QCT@LLSBD!/?X/0(]@&K= IZEMI J5FP0UJPFTB*Q-:?NT6QVO
MQ#2F<MD:Q-,V^=AE3^PT'+4 ;BR &N@*I1K@0>N]1H0IA%IQ<L7+'>W:YJ6Q
MD+N+A[I4P+>&)D#>!6-E,U([^80;+"&$"*[(E%@[-WU7NDX+QQ#&_L'4NQ':
MJ,:-/?CIAY2J\!$N%>;<=,4?4#/#9<FT;D&UERBA^C8.3--MI90M%V4II#C=
MDUQWT3>U%"ZP3FWGO$X^:C)I' -R-X]<\:R@(]NUMOGL0]?]P!ZX4?ARH%1L
MYWX]]]79;Z<2G6AB2Q+9(5,VZ!*UK2<=ICAI!=B*"O L8PHEFW5!@6Q:CH8H
M]2=T$+_3JVU3OG6Y# ]N;CJ$:_<^(2AE(TQ[B??<_@ETWM[\S^+M^XDN\+5M
MXA)7I!H,)B,/5/LF:0DC:_<.6$I#KPJW+.@9A\H*T/Y*TM'J".N@?Q@N_@%0
M2P,$%     @ 1(@#4_1G0E'I @  !P8  !D   !X;"]W;W)K<VAE971S+W-H
M965T,30N>&UL?53;;ALY#/T58EH4+>!F+G82-VL;B),&[0)=!$EV]V&Q#_(,
M[1&B$:<2)T[^OI3&GJ1%XQ==>0X/)9*S+;E[7R,R/#;&^GE2,[=G:>K+&AOE
MCZA%*S=K<HUBV;I-ZEN'JHJ@QJ1%EIVDC=(V6<SBV;5;S*ACHRU>._!=TRCW
MM$1#VWF2)_N#&[VI.1RDBUFK-GB+_'=[[627#BR5;M!Z318<KN?)>7ZVG 3[
M:/"/QJU_L880R8KH/FR^5O,D"X+08,F!0<GT@!=H3" 2&=]WG,G@,@!?KO?L
M5S%VB66E/%Z0^5=77,^3:0(5KE5G^(:V7W 7SW'@*\GX.,*VMQU/$B@[S]3L
MP**@T;:?U>/N'5X IMDK@&('**+NWE%4>:E8+6:.MN""M;"%10PUHD6<MN%3
M;MG)K18<+_XB1IC"1_AJ'] RN:=9RL(;;M-RQ['L.8I7.$[@&UFN/7RV%58_
MXU/1,X@J]J*6Q4'"/SM[!.-L!$56Y ?XQD.0X\@W/A"D!R:XTE;94BL#MZP8
M);G8'^"?#/R3R#]YA7]X.[C4OC3D.X?PWQT^,BP-E??__^Y-#U*&6CSSK2IQ
MGDBQ>70/F.P_Z]E=25(=GCVT3DM-:?,$M :GMI(BC$X"]2/8UKJL08DDAR4Y
M^2)0#%PC2$6B"XB2/ ,Y0;E[:02=UW83+3PK6RE7]18-<DW5P-BVCAYU\.1A
MK9T8]..= "^H:95]>O=F6N2G?WC0OVH6%>(X^%B3$2'!H_+[LRJ2:EOI4E;5
M&4A*8$R)2RRQ68GL<3Z"]]J*.75>5/H/,5W"D,$=L7SRL].W\&DT_G0L<YZ/
M\J* \^!3<B&XER=8>3+H2PP'[XOI!#[(=)+)-#SV"*P\C>A3 S2PYGD>6+/1
M]*2 W^52^J(X&W2;V(*\/$-GN:_3X73H<N=]<3^;]RWRFW(;;3T87 LT.SH]
M3L#U;:??,+6QU%?$TCCBLI9.C2X8R/V:)(-VF^!@Z/V+'U!+ P04    " !$
MB -3)01:.Q(&   %$   &0   'AL+W=O<FMS:&5E=',O<VAE970Q-2YX;6RU
M5]MNVS@0_96!MUFT@"*+NMA2-PF0M.E>@':-N)>'Q3XP$AT1D40O2=OQ?OW.
M4+*BU(X+%%LTI<7;<.;PS"%YME'ZWI1"6'BHJ\:<CTIKEZ_'8Y.7HN;&5TO1
M8,]"Z9I;K.J[L5EJP0LWJ:[&81!,QC67S>CBS+7-],696ME*-F*FP:SJFNOM
ME:C4YGS$1KN&&WE76FH87YPM^9V8"_MI.=-8&_=6"EF+QDC5@!:+\]$E>WT5
MTW@WX+,4&S/X!HKD5JE[JOQ>G(\"<DA4(K=D@>//6KP1546&T(U_.INC?DF:
M./S>67_G8L=8;KD1;U3U11:V/!^E(RC$@J\J>Z,VOXDNGH3LY:HRKH1-.S9.
M1I"OC%5U-QD]J&73_O*'#H?!A#1X9D+830B=W^U"SLNWW/*+,ZTVH&DT6J,/
M%ZJ;C<[)AC9E;C7V2IQG+SXH*R"#4YA;E=^?4H %O%$U;KKAA-O9V.(R-'B<
M=R:O6I/A,R8G\%XUMC1PW12B>#I_C.[U/H8['Z_"HP;_6#4^1($'81"R(_:B
M/N;(V8N.Q&S *G@G&][DDE<8/;<"N6;-$?MQ;S]V]N-G[,]+KD4'Y8QOR2Q<
M:LV;.[<$_/51/%BXJA#POP_!>]0Z9>EKL^2Y.!]A&AJAUV*TV\9/B+@&6PJW
MA;S9_OQ3&K+I+P:A8^&@L*)!%FW;"GTTRL)UO:S45HB6"S!;Z;S$(&!6\08^
M/F?4R =XCQ98 A_46M2WZ %+/%A(;6Q'JZL]6L'U WV+)[S+AP-$-V###;R(
M_0S97U4ND9L"7D3^I&] :7(QVU*C\\@6T;.%BL"YN-_L=7'^N:3UC(MPH2J4
M*=G<@>6WE>BT2OZ+?#%NL%H^BHFT6RA6VHW&N?NK?'&:((I3N%P+C1KWU8K7
M#T+GDA#6,A=],VJGL1@E&>86WHJ\135B7AM/&&9>$C%X >G$CR?P*W(+EX%D
MZF4! Q:F/HM[ZP6\#%,ORQB\@B3UIRF@GBV$I!DO4R^)I]C! N9/DN=<^ J\
M.//2+,;EL]1/V6XA!]C>8,8F7IR$Y"OSH]2A/+2NNA7O1(,05=462KY&.TA1
M78-:.*HNU$HCH;"]955;DJG-#F+>(7Q'6$"!Z0P++C6L>;429&>WD"W1QXW0
MW5 $X>@>'F+%4JNU+$A#L),;)$EG>T5HR\:U7U4<B3W/2U7AR"7N,!FH52$J
MYU3+\H%C1]UP^SZG5!MHZZ$Q-]+<GRXH$20&AP)A01,8@9\&*//,9^$)5I*V
M$D]/7";FA$,E%P)>;@77YA5,_#!IB[Y_K2ITNB+:QXD?IF@!?Y/H!.+0C\E@
M'/EI-+!82,()\W4K155 <$)_EX:B?NKZ#?J)"-&<-D4&#6WB\0W7A0%45C!.
M7XVPML+N70>NHKM)#LZ*+S&S,';<LBV@,K4BL<8Q!/-2:*D*#S:ES$N00P+R
MKA,66M6=JAPDWQ&UT'O^?Z=BN-R&M[2% TS>$;4_.VIW8HWAN7/G '*')"0*
MIA[+LBZ'I[V$L&GJ15D*+$*%G?;&'A%%S6 L\B*4^U>0(9V"H9RPV$O"Q.E)
MXD_#@\X\C3A"T9HF4W2$L=2/V4%Z8'3N_MGD@WC[EM;RJI'6P,O9_!.REX#
M P1W89>1J";., H+UW=XVVU6#A%LHBE(!&E+9-%V4Y(VW J[$:@\0;?_>-1-
MJ<@&J?:L/@QXL-SS\W\@PC#X(TS8Q^@@%5CF9<FDVX#)XVF"AWB AT48(!/B
M@TPXQ7_#1?"Z@'<<USS@1.RQ-":R9'Z2'7;J*TH$7HKZA Y- A\1_VX))JW$
M6PO7E3HFP+3_/UQ]PQ!.2' 9/*>X(>4A%NE!Q4T82>P)1'B"!W!$8[&/_A]*
MHV]>\/91Q@LF7HH/HXPW:!+3F@*D 4_/6VJYGL]F/QS98()\"[IS#;.4SK4D
MVT.Y=@O0P18$;7$09CPG$S0QZ0^V2835)/.S[%L'VZ&GPWCP-*L%"@\]0 W>
M=%>-;5]I?6O_QKULGW:/P]L'\GO4+4G))Q8X-?"G^*34[:.SK5BU= ^]6V7Q
MV>@^2WRG"TT#L'^A\)7056B!_N5_\1]02P,$%     @ 1(@#4S$3E]&" P
MV@@  !D   !X;"]W;W)K<VAE971S+W-H965T,38N>&ULQ59+;]M&$+[K5PR(
M'!2 -A^B9<F0!%A.C:9H',-VFT.0PXH<B5LO=]7=I>7TUW=V2;$48,M%>B@$
M4+./^>:;!V<XVRG]:$I$"\^5D&8>E-9N+Z+(Y"56S)RJ+4HZ62M=,4M+O8G,
M5B,KO%(EHC2.QU'%N P6,[]WJQ<S55O!)=YJ,'55,?U]B4+MYD$2[#?N^*:T
M;B-:S+9L@_=H?]O>:EI%'4K!*Y2&*PD:U_/@,KE89NZ^O_ [QYWIR> \62GU
MZ!8?BWD0.T(H,+<.@='?$UZA$ Z(:/S98@:=2:?8E_?HU]YW\F7%#%XI\847
MMIP'DP *7+-:V#NU^QE;?\X<7JZ$\4_8-7?/Q@'DM;&J:I6)0<5E\\^>VSCT
M%";Q*PIIJY!ZWHTAS_(#LVPQTVH'VMTF-"=X5[TVD>/2)>7>:CKEI&<7-\HB
M)#&<P&6>UU4MF,4"/ML2-5RIBA)=N@P\(7R4N:H0AK\J8][/(DO&'424MX:6
MC:'T%4-C^*2D+0W\) LL#O4C(MTQ3_?,E^E1P%]J>0JC.(0T3I,C>*,N$B./
M-SH2"0-6P3673.:<";BW% VJ0&N.X&<=?N;QLU?P/W"3"V5JC:#6<(>Y8,;P
M-<^9+\_+2M72PM<'?+:P%"I__/92D(_:<&_PA=FR'.<!9<Z@?L*@2W&3U/P@
MJ;Q-JG!)!6Z:8VZH!H@DO?-4U9+J4&N4^7>PFDDC&L*L^(/*TT<'F"Q 4@>I
M)34&P?\B]0TU!-, (T&3 I=/N%?@$@P2++<<S2D\E$C&!'4(+C=@V4H@> ?<
M7:(-><GD!KT>Z]6I>M.E%1.43-(LR)C#)C!;:D0P_!FHAK"K(?>(!P_^L%^K
M<$\W^QN#3FTO#(9$S):J-A0)LMK!]8"7#1-@%E:XX5(Z.A3D+6JN"G@'PR0.
MX^D8WCMY&DZGDT8<A1D!>?$\C!/:'5S_R\0,WL[Y"EV6J;\>UJ.!-(Q',8S&
M&0RS<)*DQ&"8AN.$" Z:8C4]+0K36JOJS>PXH]1L_&]P0R73N&!/VC"\G=%C
MO&Y^N ;_2Z2&V91(G$"2G)-3_V=L#IGT*@YE<5AKDS!)SO:E-AYEC?C"[DN=
M+^K-FPKUQD]5USO(\6;T=+O=X+YLYM4_UYNI_XGIC4N2P#6IQJ?G9P'H9I(V
M"ZNV?GJME*59Z,62/CY0NPMTOE;4WMJ%,]!]SBS^!E!+ P04    " !$B -3
MAX/5;] "  !:!@  &0   'AL+W=O<FMS:&5E=',O<VAE970Q-RYX;6Q]55U/
MVS 4_2M7T1Y9DZ:%(=16HC T)K%5P+:':0]N<M,8'#O8-[3LU^_:":$,VI?&
M'_<<G_O9R=K8>U<B$FPJI=TT*HGJDSAV68F5< -3H^:;PMA*$&_M*G:U19$'
M4*7B-$F.XDI('<TFX6QA9Q/3D)(:%Q9<4U7"/LU1F?4T&D;/!]=R59(_B&>3
M6JSP!NE'O;"\BWN67%:HG30:+!;3Z'1X,A][^V#P4^+:;:W!>[(TYMYO+O-I
ME'A!J# CSR#X\XAGJ)0G8AD/'6?4/^F!V^MG]HO@._NR% [/C/HE<RJGT7$$
M.1:B471MUE^P\^?0\V5&N? +Z]9V=!A!UC@R50=F!974[5=LNCAL 8Z3'8"T
M Z1!=_M04'DN2,PFUJS!>FMF\XO@:D"S.*E]4F[(\JUD',V^&4(8#N$C7.K,
M5 BW8H-N$A-S>XLXZWCF+4^Z@^<(KHRFTL%GG6/^&A^SIEY8^BQLGNXE_-KH
M 8R2 TB3=+B';]0[.@I\HSV..B #%U(+G4FAX(8$(1<8N3W\XYY_'/C'._A?
MP@?GTF7*N,8B_+[%#<%<F>S^SWM!W<OI&_+$U2+#:<0=Y] ^8M1G[+9$.#-5
M+?032,==M;SC2O<>RE8*L12IH>+ZE+5"N&NL=+D,W>! Z!R(*1J'8 I 1Y)K
MG$/$7!8?&FDQ]V0Y$EHN/ S6M36/,C0DSX.MA] -@+LDV%!I$8'SAWW^_$_2
M73BY^>]2&WH7M)/H+<7;DV#H8X1%@:'UM^-BV=7@@A?\%KP=VU+DT&B+F5EI
M^=<'A?%+U%A(\@5%@M.V@@^'@X0;5*DP:YR/Z6O.<\RP6J*%T?"@5?==PY6P
M6<G9;&T.0BA>P]XKS7BKWRNTJS#5'&2FT=2V?G_:#\[3=EZ\F+=3EP6L))>#
MPH*AR> 3SRG;3K)V0Z8.TV-IB&=16)8\_-%Z [XO#-=CM_$/]'\GLW]02P,$
M%     @ 1(@#4RBDCMR6!0  UPP  !D   !X;"]W;W)K<VAE971S+W-H965T
M,3@N>&ULS5=M;]LV$/XK!Z\86H"))>K561*@25HLQ=($2;M]&/:!EFB;JT1Z
M)!7'_WYWE**XK9,! P;LBWP2[Q[>/?="^GAC[!>WDM+#0]MH=S)9>;\^FDY=
MM9*M<(=F+36N+(QMA<=7NYRZM96B#D9M,^51E$];H?3D]#A\N[&GQZ;SC=+R
MQH+KVE;8[9ELS.9D$D\>/]RJY<K3A^GI\5HLY9WTG]<W%M^F(TJM6JF=,AJL
M7)Q,WL9'9RGI!X5?E=RX'1DHDKDQ7^CELCZ91.20;&3E"4'@S[T\ETU#0.C&
M7P/F9-R2#'?E1_3W(7:,92Z</#?-;ZKVJY-).8%:+D37^%NS^5D.\62$5YG&
MA2=L>MV43Z#JG#?M8(P>M$KWO^)AX&''H(R>,>"# 0]^]QL%+R^$%Z?'UFS
MDC:BD1!"#=;HG-*4E#MO<56AG3_]:+R$F,,!W,DEDNWA5JZ-]4HOCZ<>-R"U
M:36 G?5@_!FP'*Z,]BL'[W0MZZ_MI^C8Z!U_].Z,OPCXH=.'D$0,>,3C%_"2
M,=HDX"4O1.O &WBOM-"5$@W<>>$E!>Y>P$]'_#3@I\_@?\<A7"A7-<9U5L+O
MG^2#A[/&5%_^V,?MB]#4G$=N+2IY,L'N<]+>R\F8O4\K">>F70N]_?&'DL?%
M3PX[AGP0\T:"Z]UR(- -JN$:L"$\&BGMI=5(@QT][FAYO@W+WV*>KY1<P+L'
M67743'"]6*A*6@:;E0'E@DT5='!J6!'P:EFIT,*M^"(MO#Z_OKAZPR@)PCGI
MW(XJ"F',Z$J"T'6P&.W1^SE.E;"':)!%$=K:+-!W9SI;27<X$&$Q%LPJ?-:#
M(D9$>!\$1@/TOC1VB\%735=C06BC#_;0Q=!#V.# H%_B7-AJ%8!J>8_C;!UR
M3>]+J3&&)LBBQC95SE-,2%%EG"=BA-]E%&H3]O5P21FHAJ]HI)T(\\K!VBJ<
MDZK9XMX-A8.4J5Y;(UVX-^U(4TWY;=AZ)7##N90:9*/0BS%PRKM\"-'6L+"F
M#;[T(9-*:SJ,MZ>O5HN%M))R,)=^0VA(E&EE;SAD*^0#D;$6#[QX>%3I/0TM
MAIG$D8AT=Y;0M@?]&I*%1T5OC(V!%1#$$)AT_A'(4)[<"JNUH7)X5+I'E2$W
MFY6B;&!D1.,M9D1W<E#;Z^Y\NZ<GR,U AE]9B5_5 ^#0D>/0H4>$O-#B[G![
MTKI#D_TKKQ4UF>D<.N7>[, ]28/;1UBJBK@)T\C!*YAE+$E3%,J<E3Q!(48I
MF14D%?AM-H-WG<7P@*<LSS*(<U;P&:0YBZ,4DH)E<3Y4?,*B=$9/!,I97B10
M,)Z7\,GXT/H]=0C,2;,D*<I95F0H\63&XH(\X3QF>9G\=V1<[N3M>LS;]]SP
MG/$R(B%%DF8HI"4K2B(IG;$T*1^9R5B4)\ QUABCSV><HN?9/TZ(UW'&,&YX
M@Q):9T%*.(OCB"3<MBP+E'K^]KM-)/:I0 ']S&)R.&))3JPF,9*:#P"-T<N#
M!H=%'48BS6G_315>R$JV<QR?:-B3-:Y_M?0LR\_LM(=<3G%2F7%DH4#[@<P\
M8G$:039C25D.1&$BD&TLM:P8=OCE:8>W?2P(5)8LG85B*CG+\WSL5FS)M35U
M5WF@\^[_THR7^L_ATGAEFII.IE>0E2S.J36R ILO9!73FO'0D%@E>1'!^<=S
MN!)X &JR26.68<EQK,T\@J)D'#G(L0+3#)(+N+%*AU,O1F0T1C2>Y)!D+(TR
M<CDN4[@+%_,K2=2FK,"\8+/G,YBQ&>K&6$YQ"==(F1TY3:,88A9A\].3Y#+/
M_V6K[[L237<NFZVTRW"E=GC.X1'2WSO'K^.M_6U_67U2[Z_\5\(NZ2QHY )-
MH\,BFX#MK]']BS?K<'6=&X\7X2"N\)^'M*2 ZPN#%Z#AA388_\N<_@U02P,$
M%     @ 1(@#4R1+^GLG P  K08  !D   !X;"]W;W)K<VAE971S+W-H965T
M,3DN>&ULE57;;MLX$/V5@="'%E LZF)=#-M G6:Q7:!%4&>[#XM]8*2Q1402
MM205NW^_0TK1.D!CH \2AR/.F3.'Y&A]DNI)UX@&SFW3Z8U7&].O@D"7-;9<
M+V2/'7TY2-5R0U-U#'2OD%<NJ&V"B+$T:+GHO.W:^>[5=BT'TX@.[Q7HH6VY
M^K'#1IXV7NB].+Z)8VVL(]BN>W[$/9H_^WM%LV!&J42+G1:R X6'C?<Q7.T2
MN]XM^"[PI"]LL)4\2OED)Y^KC<<L(6RP-!:!T_",M]@T%HAH_#MA>G-*&WAI
MOZ#_YFJG6AZYQEO9_"4J4V^\W(,*#WQHS#=Y^AVG>I86KY2-=F\XC6O3PH-R
MT$:V4S Q:$4WCOP\Z7 1D+,W J(I('*\QT2.Y2=N^':MY F474UHUG"ENF@B
M)SJ[*7NCZ*N@.+/]*@U"##?PE0[ YZZ4+<(]*KB5;4NB[6NN$-X_\,<&]8=U
M8"BE#0S*"7XWPD=OP*?P17:FUG#755B]C@^(ZLPW>N&[BZX"_C%T"XB9#Q&+
MPBMX\5Q_[/#B*_5K&.N[ I?,<(F#2]Z V].EJ88&01[@CJM.=$?M]'1"^K#C
M6I3 NPH^B68P6,'?+C<\X-G KI'ETS\_4_EJ5GMQ5[KG)6X\NID:U3-ZVX=:
M(;Z2'_;B_-I!:J)3<S;>BPY,+0=-'+4/>"ZQ-Z#=,;"T>ZIEFK5RZ(S^X';"
MOMB%94^3&$_3.P@COPB7HY&RS!JIGT;6B%)_6823+#=P<I<(JQO^C(IZPIA*
M W43;2@]R;F"*/.S>$E/9,/3E/E)D5MORIB?YHGU9F'NI\L([@X'NOYV-RJK
M-S4 T%@.2AB!>@5W;=_('R03W;/R"61O.X5VA4I34ZF%'\8YA 0<IS0FS,]R
M!F%8^%&>SGOX"\23Q,\SYB@2\3Q-1V_H)ZDCGL>97U#*"P%GR5>33N^ +9+L
M<DB9%77!V$SIC35L413PLW,>7+20%M71-4H-I=WCL9O,WKD7?QQ;T/_+QT;^
MA:NC(!4;/% H6V1+#]38',>)D;UK2(_24'MS9DW_$U1V 7T_2+J4T\0FF/]0
MV_\ 4$L#!!0    ( $2( U.G]=NS0 ,  $8'   9    >&PO=V]R:W-H965T
M<R]S:&5E=#(P+GAM;(U536_;.!#]*P.AAP10HT]+<6 ;B-WN-HNF&R3I[J'H
M@9;&%A&*5$FJ3O?7[XB251MIC%XD<N;-XYLA.9SME'XR%:*%YUI(,_<J:YNK
M(#!%A34S%ZI!29Z-TC6S--7;P#0:6>F":A'$89@%->/26\R<[4XO9JJU@DN\
MTV#:NF;ZQQ*%VLV]R-L;[OFVLITA6,P:ML4'M)^;.TVS8&0I>8W2<"5!XV;N
M74=7RTF'=X!_..[,P1BZ3-9*/763FW+NA9T@%%C8CH'1[SNN4(B.B&1\&SB]
M<<DN\'"\9__#Y4ZYK)G!E1+_\M)6<^_2@Q(WK!7V7NT^X)"/$U@H8=P7=@,V
M]*!HC57U$$P*:B[[/WL>ZO [ ?$0$#O=_4).Y3MFV6*FU0YTAR:V;N!2==$D
MCLMN4QZL)B^G.+OXI"Q""F]AV1IR&0,K5:^Y9%W-#)P]LK5 <SX++"W6A03%
M0+SLB>-7B#.X5=)6!M[+$LOC^(!$CDKCO=)E?)+PKU9>0!+Z$(=Q=((O&3-/
M'%_Z"M]U\:WE&DM(WL&'=FW@RRW6:]1?3W"G(W?JN),35370U^X$W62DFYR4
M^D!7L6P%@MK /19J*_E_)/RF1&GYAM/PVABT!L:<F"SA(V=K+KCE)(7\;4WV
M+TX3/.*SA:50Q=/77^WL235=F[@R#2MP[E$?,*B_H[<XXQ)LI5I#*YOS7HCA
M[N(-VMB@[0I6K=:D'%CO> .QGTYSN)&6R2WO] T>VNT\#^%/I<H=%P+BR\B_
M3"?PMZU0@U!R^]:BKO?PR(^2*3PJR\3>Q,9-CC(_GD1'16%]47X**NC$<KD=
MAH:7J-T]@-P/I\D($P<<$S_+,O@X2GF5(O,G87X I,Z!NE-FV?,18^QGX>6+
M%(\0D\F0I7B9#<2Q'\53^(3V11'B:4J^&%;,5- P7D*4)%31O+>,N+/,3Y,4
MSAU)T;F.<XGBW$^C!-X3WOZ 1FEGIM/9M+JHJ$E"HWF!$&69GX?[/1F=QVQO
M1EV_NBK!06^K46]=!S=$T4K;M[G1.CX2UWUO_ GO7YA;IK><FIK #86&%SF=
M<]UW[7YB5>,ZY5I9ZKMN6-%#A[H#D'^CZ%X/DVZ!\>E<_ ]02P,$%     @
M1(@#4Q]N3,-[!   > H  !D   !X;"]W;W)K<VAE971S+W-H965T,C$N>&UL
MK5;?3^,X$/Y71A4/10IMXOQH@J 2L+"WIUT. 7O[<+H'DTQ;'XG=M1T*]]??
MV FA[+(5#Z>J[=B9^6;\S8PS1QNE[\T*T<)C4TMS/%I9NSZ<3DVYPH:;B5JC
MI"<+I1MN::F74[/6R"MOU-13%H;9M.%"CN9'?N]*SX]4:VLA\4J#:9N&ZZ=3
MK-7F>!2-GC>NQ7)EW<9T?K3F2[Q!^W5]I6DU'5 JT: T0DG0N#@>G42'IYG3
M]PI_"MR8+1G<2>Z4NG>+3]7Q*'0!88VE=0B<_A[P#.O: 5$8WWO,T>#2&6[+
MS^@7_NQTECMN\$S5WT1E5\>C? 05+GA;VVNU^0W[\Z0.KU2U\;^PZ77#$92M
ML:KIC2F"1LCNGS_V/+S'@/4&S,?=.?)1?N"6SX^TVH!VVH3F!']4;TW!">F2
M<F,U/15D9^>7RB*D<  ?E:HVHJZ!RPK^L"O4\$E:+I?BKD8X,0:M@?$MIY79
M/YI:\NT0IF7OY[3SPW[A)X,O2MJ5@7-98?7:?DHQ#X&SY\!/V4[ WULY@3@,
M@(4LVH$7#T3$'B_>082![GP[X)(!+O%PR2_@;JA[JI:84XL7:O_R\'"+CQ9.
M:U7>__T6D3N!79,>FC4O\7A$76A0/^!H/A82[$JUAI)G]N%&/+ZB&X@L',B"
M4UYS62)PXZ*C5,,=+H640BZ?-]:HA:I@#R*6![.4;95'^;T5FC"K5CN#+6V6
M1T&>I$#M0LT@J7RU1ED^@=5<FIIW;5C]0U5-;>W**0Z2,(/]-R)"JL(?8TG"
M61 5$>Q(3SJD)WUW>BZ$%!8//M/M4+U1\^]+VDYW;R?M=5(^8(G-'75='/F=
M$+X:7+0U?/,7"X5V\H":[DGX(=D?M3(&3LJR;5KBV"DV2EOQ;\?W)5WL[U#Y
M+!8=\A-R3:B]<[]]C>YV=\G>4M@BBG=$;81=P<*3"361:0[A"]?W:)UEK[-7
MQ"'LC;-L1EG?8UD\[-"!:2>.0HC"20ALDL.ED@>E:M9(@'RI$5W50)[&,&:%
M TC3#-@LI&6<TS)F9!;279;2;SR)X48M[(9K!(OE2JI:+9\@B@/&"A@G01P[
MEWF0%\6P&P<9%? ^%$&:)UTD,_H.0&NBS[T)R6T0.<]1$.8%&;",A(A\NX^W
M*R89W&I>H>0-W2QQEL(XC5R84=+KQ?Z@&9SY>YYRK['K$K,2:T.]%[""P3@+
M9K$S3(,TBP@\")WGE$)UO9,$"4L\U 'Y=( QW"K+:Q _I6@/TB3(XX*$,1TY
MRMQ9J;&B()LE)# "*[JG81 EA7\:$55IN*OKLJ'KLO^IZP*X:&U+A+\JU/-'
MFD4,OK,E=\;RKGOTW%C1_-POSV&\](7OX#T@1JFF:,$@"UA:.#$F,71U&KHL
M$?G,B2F),R+UEMZSR!>6<A_EE-!9GSH<//-MS]A['E+V5E*F6], %=72SSP&
M2M5*VPT&P^XP5IUTT\2+>C>34?_2B\% C0LR#2<SNN9T-^=T"ZO6?K:X4Y8J
MV(LK&@U1.P5ZOE#T6NT7SL$P;,[_ U!+ P04    " !$B -3DI!WZ> "   O
M!@  &0   'AL+W=O<FMS:&5E=',O<VAE970R,BYX;6Q]56U/VS 0_BNG:!]
M"N2E34I16XG"T#;!A("Q#],^N,FUL7#L8CL4_OW.3D@[B595Z_/Y[KE[SN?K
M9*/TLZD0+;S50III4%F[/H\B4U18,W.JUBCI9*ETS2QM]2HR:XVL]$ZUB-(X
MSJ.:<1G,)EYWIV<3U5C!)=YI,$U=,_T^1Z$VTR )/A3W?%59IXAFDS5;X0/:
M7^L[3;NH1REYC=)P)4'C<AI<).?SH;/W!D\<-V9'!L=DH=2SVWPOIT'L$D*!
MA74(C)97O$0A'!"E\=)A!GU(Y[@K?Z!?>^[$9<$,7BKQFY>VF@9G 92X9(VP
M]VKS#3L^F<,KE##^%S:M;9X'4#3&JKISI@QJ+MN5O75UV'$XB_<XI)U#ZO-N
M _DLKYAELXE6&]#.FM"<X*EZ;TJ.2W<I#U;3*2<_._NI+$(.)W#-N(8G)AJ$
M6V2FT4BEMP:.'ME"H#F>1);".:>HZ*#G+72Z!SJ'6R5M9>"K++'\WS^B-/M<
MTX]<Y^E!P!^-/(5!'$(:I\D!O$'/?>#Q!@>X&VCY'8 ;]G!##S?< [>M8 @7
MQB 5KZMD"=1_]U@T6G.Y@CDSW, ?'Q@>\<W"7*CB^>]G)3X8TKW8<[-F!4X#
M>I(&]2L&KDS8EPFNL,!Z@1H&B=?$<,0EV$HUALG2',,-OJ* I%O3;AWLU5]S
MR63!F>A(GL,E,Q40&!1.P)>&OS+AF^<+#.,P'P])..F^HS1,TZQ74(O@.S6T
M?J8!5#>V(=QE0UA)F"89&9Q EH6#T9D7;[V=KYMQY>26TPTFHW"<)9".PW@<
M>SOW>526L+Y -@[/\IB$[KR-G*2C,(\'?1Y;5C><+;CPR$2-.IBNC,A H6@2
ME:B9GR9;0EF8I^.=_3;R?HO/NBW:><0UZI4?58;"-M*V[[G7]M/PHAT"6_-V
ME%*95EP:$+@DU_ATE 6@V_'4;JQ:^Y&P4)8&C!<KFNBHG0&=+Q4]C6[C O3_
M$;-_4$L#!!0    ( $2( U,ZEN_3KP,  ,L(   9    >&PO=V]R:W-H965T
M<R]S:&5E=#(S+GAM;+5636_C-A#]*P.A!P=0K&];#FP#L=-MMV@6P2;9'HH>
M:&EL$9%$E:3LN+^^0\I1G,5&NSWT8)L<\;V9></1>'X0\DD5B!J>J[)6"Z?0
MNKGR/)456#$U%@W6]&0K9,4T;>7.4XU$EEM057JA[T^\BO':6<ZM[4XNYZ+5
M):_Q3H)JJXK)XPI+<5@X@?-B^,QWA38&;SEOV [O43\V=Y)V7L^2\PIKQ44-
M$K<+YSJX6B7FO#WPA>-!G:W!9+(1XLEL/N8+QS<!88F9-@R,?O:XQK(T1!3&
MWR=.IW=I@.?K%_8/-G?*9<,4KD7Y!\]UL7!2!W+<LK;4G\7A5SSE8P/,1*GL
M-QRZLU/RF+5*B^H$IGW%Z^Z7/9]T. .D_CN \ 0(;=R=(QOE#=-L.9?B -*<
M)C:SL*E:- 7':U.4>RWI*2><7GX2&F$*EW#+Y!-JMBD1[C%K)=<<%8P>C$5=
MS#U-S@S$RT[$JXXX?(=X K>BUH6"G^L<\[=XCX+L(PU?(EV%@X2_M?48(M^%
MT ^# ;ZHSSRR?-% Y@JZ_ ;HXIXNMG3Q.W0WN-%GRKEPO6>\-.R7U#J7BI&P
M?UIO\(#/&E:ER)[^^I:N@WY,DUZIAF6X<*@+%<H].D8;[+6!$:]!%Z)5K,[5
M!:R%TO!84\N6_!_,X1=J575N^%TH15)\8%S"%U:V"(_C^S%4;<TSWK 2U.N%
M^(E<N+-)2HLXHJ]1,(6+DW46DR_9",GH3N5&CS-@,'/]20B$'(4S@M ^\(/.
MTT[L4=;4ZAKH15!GQS= -_%]NJ"CT*#<>);"&J7F6YXQ4T&Q)5^-4%Q[FEX7
M+QL%B1M11$E,V,2-XQ0>A*9DJM>+_B:O>.+.PI@6P20QB1' )!9/73\.X 8S
MK#8H(0JLRO[_K7+B^KX1.+4JAYW(9$R'1(Y#"C:%,*!+0)\+8PC)\ ,JIU;F
M">%\HW-*0D_^@] )S*).Z)3J(ZH*9<8IJ88U)%I(;#-Z?'E:#5=B%E&Y3 VB
M69=\9+,G<QHD,-"K2=^KR6"O?JSWJ+110L&Z9$I1CE2AS9$BK[6D2=%2>+=,
MFYB.<&.D_K'>'?3[G=[]ZD+95KZA:T)F04>.R"0("?2Z,B)1A:*X.\"VFC3N
MS^A"BG97P);&G;4H"%-W2M7]3@-T-_U;^GIG X8JN[-C5$$FVEIWLZ:W]I/Z
MNAM0K\>[,4]S9F<ZH\0M0?WQE"23W>CL-EHT=EQMA*;A9Y<%_=M :0[0\ZV@
M%_=I8QST_U^6_P)02P,$%     @ 1(@#4_K31-YG @  % 4  !D   !X;"]W
M;W)K<VAE971S+W-H965T,C0N>&UL?53;;MLP#/T5PMA#"V3U)9>E11*@:3>L
M SH43;<]#'M0;"86*HN>)#?MWX^2'3<#VKR8(L5S>#&IV8[,HRT1'3Q72MMY
M5#I77\2QS4NLA#VC&C7?;,A4PK%JMK&M#8HB@"H59TDRB2LA=;28!=N=6<RH
M<4IJO#-@FZH2YF6)BG;S*(WVAGNY+9TWQ(M9+;:X0O>COC.LQ3U+(2O45I(&
M@YMY=)E>+$?>/SC\E+BS!V?PE:R)'KUR4\RCQ">$"G/G&02+)[Q"I3P1I_&W
MXXSZD!YX>-ZS?PFU<RUK8?&*U"]9N'(>32,H<",:Y>YI]Q6[>L:>+R=EPQ=V
MK>\XB2!OK*.J W,&E=2M%,]='PX T_< 60?(0MYMH)#EM7!B,3.T ^.]F<T?
M0JD!S<E)[7_*RAF^E8QSB^_D$*;P$6[T$VI'Y@5.'L1:H3V=Q8X#>+<X[\B6
M+5GV#MD$;DF[TL)G76#Q/S[FQ/KLLGUVR^PHX;=&G\$P&4"69.D1OF%?[3#P
M#8]4:Z&M[PC=J*<;!;K1.W0K7I&B40BT>>W? *X:8_@,OT,@>,!G!TM%^>.?
MMUIZ-(3?R0M;BQSG$2^=1?.$D6\+AK9<8X[5&@T,TP&<2 VNI,8*7=C3T#+_
M2>"!G% @^Q_\ <X'P_,QRS0=I%D&EXIW4^@<@;<<:&V)^Y.C-YQDTQ&<LI@D
M+ Z*U/Q@<-FBAWK6-$T]:S*83C)XJ\'QP:16:+9A'RWDU&C7#FUO[5?^LIWT
M5_?VO;@59BNU!84;AB9GG\81F'8'6\51'>9^38ZW*!Q+?K;0> >^WQ!/0Z?X
M /U#N/@'4$L#!!0    ( $2( U.JZJ;]O00  '8.   9    >&PO=V]R:W-H
M965T<R]S:&5E=#(U+GAM;+57;4_<.!#^*Z/5(8$4LG$2YZ6"E:"TUSNI+0+:
M?CC=!Y/,[D8D\9[M9>'?W]@)Z5*6''TYL22QXWE]YAG'1QNI;O02T<!=4[?Z
M>+(T9O5J.M7%$ANA?;G"EM[,I6J$H:%:3/5*H2B=4%-/PR!(IHVHVLGLR,V=
MJ]F17)NZ:O%<@5XWC5#WIUC+S?&$31XF+JK%TMB)Z>QH)19XB>;3ZES1:#IH
M*:L&6UW)%A3.CR<G[-5I;M>[!9\KW.BM9["17$MY8P=_E,>3P#J$-1;&:A!T
MN\776-=6$;GQ3Z]S,IBT@MO/#]K?NM@IEFNA\;6LOU2E61Y/L@F4.!?KVES(
MS3OLX^%67R%K[:ZPZ=<&$RC6VLBF%R8/FJKM[N*NS\-+!,)>('1^=X:<EV?"
MB-F1DAM0=C5ILP\N5"=-SE6M!>72*'I;D9R9?9 &(8=#N#2RN#FT 9;P6C8$
MNA8N;_M7XKI&?7 T-63/2DV+7O=IISM\1G<"[V5KEAK>M"66C^6GY.?@;/C@
M[&DXJO#/=>M#%'@0!B$;T1<-P4=.7S02O(8NOA%U\: N=NKB9]1=+H7"/H7G
MXIY*U\")4J)=H'WVX./*9M2#$UN*E;F'OYQMN,([ Z<U ?#WKBR/6K6L?:57
MHL#C"=%2H[K%R>R+JT8L#^'D%A6QJ\.W]X 0N4-55!KA7%4%#M/$6FU$6U;M
M H2!,RRPN48%$7,Y#R ,<X]'#'Z#+/'C!'ZGZ,@,\-3+ P8LS'P6#]I+V \S
M+\\9' #/_#0#8M(<*RNQGWD\3ND%"YB?\.=<(,AQ@!S"./>R/";S>>9G[,&0
M2^*3Q8PE7LQ#ZROSHPQ&$.8#PGP<8>J)Y9J,R3GL1'LC5.D]SK4'GT6][KAT
MHJGY]8&^#/M1?W9C?UG=/2+>MSFT.%Y4^N9PKA"A(OQ(U( 2U D"/PNH&3"?
MA7LTX-T@3O<HU2MJI*2MKN8(^_<HE#Z Q ]Y=QG>W\J:@JUM><?<#S/20'<>
M[4$<^K%5&$=^%FUI+(D,);8EW%=8EQ#LV=\(6LF 5O)S?+R@N*G^K0\=9%1W
M3R<_M97Y;LZ.>O92SCIVP9D%9LNKMZ)2KJ8>2'U.#'6Q;J_274"[2!P%J<?R
MO&=1.I"8I9D7Y1FP*/*3=%#FJK46*\=GQB(O8IQXFU.1!-N$9K''0^X8S?TT
MW.G,XU*,J&VD/"5'&,O\F(V!G@Z@IR^FZ ?9WI(3%GY4[@.F+1X*PJ*JOQ?5
M4=,_@.J66V.P;B\;P97E7LZ3/IO)U^;,N!=0[PT#@C7>">LA_6T;*9:6)&YZ
M"^#88UELD<]]GN]VZAM\ R^C%D(.)8'/\C%XLP'>[%=T8'?3\-$L*4%7%,VO
M[,G_X>%/M=\PA#W;<1D\UW)#2UFZ9#M;+F>VQ^Y!1-MM "--EM[1_P@B^8!(
M_BL0>=.L:GF/0W&O%169_0"I1?MS<(RZ]W]LD4%"O CZ+9*E;HOD^1.\&F?
M[I%!T%UV D9;+B<5R;!')A$->>[G^8_LD=.MLT"#:N%./!H*N6Y-=RP89H=#
MU4EWEOBZO#N1O1=J4=DF@7,2#?R4/D94=\KI!D:NW,GB6AHZI[C')1T,4=D%
M]'XNZ0.['U@#PU%S]B]02P,$%     @ 1(@#4\)?:]@= P  B@<  !D   !X
M;"]W;W)K<VAE971S+W-H965T,C8N>&ULQ57?3]LP$'[O7W&*]E"D0'XTE!:U
ME2C;-*;!$+#M8=J#FUP;#\?N;(?"_OJ=G;2T&O1E#U.DY.SXOOON\_D\6BE]
M;TI$"X^5D&8<E-8N3Z/(Y"56S!RI)4KZ,U>Z8I:&>A&9I496>*=*1&D<]Z.*
M<1E,1G[N6D]&JK:"2[S68.JJ8OIIBD*MQD$2K"=N^**T;B*:C)9L@;=HORRO
M-8VB#4K!*Y2&*PD:Y^/@+#F=9FZ]7_"5X\ILV> RF2EU[P87Q3B('2$4F%N'
MP.CS@.<HA ,B&K]:S& 3TCENVVOT]SYWRF7&#)XK\8T7MAP'@P *G+-:V!NU
M^H!M/L<.+U?"^#>LFK7]XP#RVEA5M<[$H.*R^;+'5H<MAT'\BD/:.J2>=Q/(
MLWS++)N,M%J!=JL)S1D^5>]-Y+ATFW)K-?WEY&<G5\HB)#$<PEF>UU4MF,4"
M/ML2-9RKBC:Z=#OP@' A<U4A=#\I8PZ@>\=F LW!*++$PF%%>1MQVD1,7XG8
MATLE;6G@G2RPV/6/B/TFA72=PC3="_BQED?0BT-(XS39@]?;2-+S>+T]DAAH
M\ML#EVW@,@^7O0*W3\7O/@K<X:.%J5#Y_8^7]-R/?U=JQ!U-X98_[DQT2"+T
M$JV-3I=+L*6J#9,%$7'2N5?\;'6F3#"9(S +,UQP*;E<@)K#$C57!;R!;A*'
M\; /!\X>AL/AH#%[849 WCP)XX1F.W2"Z'Q(JFBM4>9/8#63AHK-G\SB)Q4Z
MG71K.DWEY3N:\58SX36;(;4BI(:0"V8,G_/<HQA(P[@70Z^?03<+!TE*#+II
MV$^(8.>L4C7!;WF13'.M*FH+SV6O7@CN@M+I\$_GBKIDDX(];&5XR6>7\#Y>
M#K"6U$T%_TT$%M1%3>-'9PM(&RX?L-6&;#!(X;GE^$]*=;,AD3B$)#FAI/ZG
M-KM,MBH.9;%;:X,P28[7I=;O98WY]^Q+)S;:ZH\5ZH6_!0P1H[R;5KF9W5PT
M9TU_?5[>W%*73"_<'@F<DVM\=$)]73>=OQE8M?3==J8L]6YOEG19HG8+Z/]<
M47MI!R[ YOJ=_ %02P,$%     @ 1(@#4R]!_ZIN!   ]PL  !D   !X;"]W
M;W)K<VAE971S+W-H965T,C<N>&ULQ5;?;]LV$/Y7#D8?$H"-14JBI, VD#C9
MUJ)N@SC='H8^T#(M:Y5$CZ3C]+_?D9+5=(N% BNV%^DH\3[>C^^.-SDH_=EL
MI;3P5%>-F8ZVUNXNQV.3;V4MS(7:R0;_;)2NA<6E+L9FIZ58>Z6Z&K,@X.-:
ME,UH-O'?[O1LHO:V*AMYI\'LZUKH+]>R4H?IB(Z.'^[+8FO=A_%LLA.%7$K[
M<7>G<37N4=9E+1M3J@:TW$Q'5_3R.G/[_89?2WDPSV1PGJR4^NP6;];34> ,
MDI7,K4,0^'J4<UE5#@C-^+/#'/5'.L7G\A'])^\[^K(21LY5]5NYMMOI*!W!
M6F[$OK+WZO"+[/R)'5ZN*N.?<&CW)GABOC=6U9TRKNNR:=_BJ8O#,X4T.*'
M.@7F[6X/\E;>""MF$ZT.H-UN1'."=]5KHW%EXY*RM!K_EJAG9^^5E4 9O(:E
M+##8%N[E3FE;-@6</8A5)<WY9&SQ)+=_G'>HURTJ.X'*8:$:NS5PVZSE^EO]
M,5K8F\F.9EZS0<"W^^8"PH  "Q@=P M[MT./%PZX;:#U;P NZN$B#Q>=@'O3
MY*J6L-&JA@\[J85CG('5%_A9JD*+W;;,X0J+!G[W9\*#?+)P7:G\\Z>7HCMX
MFJO32[,3N9R.L!"-U(]R-'O8:BF_"3M@T*0/VK)\.O'GK&S ;M7>B&9MSGUT
MW2-X)KWLVR5\;$J+4$LK7"A? >.$I8$3(A)&&0I12I(T=$)&HC"%V[W&9@(Q
M"7@(C#!.(20\8\ )9S',E4;F(1I"BPIC(QP^&@9OQ4XT<$9CPL(,SE%"[=A+
M(2.4!D["8],T0>E!65&=,!N-H9S0('("VAE39W! 0AZC$%)"$PX#A(A[0L2#
MA'BGFN)UA?UF#5?&2/L2%\QWDF'PI)?)T.?W1N:R7DGM7#N=[#9BU5>;A;?Y
MA1PS%^[$29B,!/6[G/* T"B ."-AFG;Y0CY@TA,2QTEWPC^C@D!I2J(L]A(C
MG ^&G_?AYX/AORF-* HM"Y]U4!OL:H^RV<OO#/D@^G]<?YWEE\CH/[JK;*&J
MM6O0KR!.">6I$Q*29I[52.N8)5[">"8!S-_/82'R;=DXG8B2&$N.86WR )*4
M, P^QPJ,8@AOX$Z7C6_^%)%1&=%8R"&,213$SF2:1K#TX\)"NIQ&)$%"1)BY
M##*2X5Z*Y413^&"WR+MCW*.  B4!Y?[IY!13W=)"=WO09!:2('+^T("3./&T
M"#.T)/+LHX1C0QD@2-(3)!DD2-<1T,_NVL-B7/A*^32 GO;HZ8^X7;(>+ALT
M]AA#W\MNGZS4V!]A[H<#J?]-:QD\]__B^=^;3A;C?>+RGW*2,G>?4)3"S',\
MP6]9=FQ#> ?P.'8M/F$91&VG#[$%(>_:IN3XE;DG B'IDQ ;%,,*^G%,'#\;
MQC ]A1\Y#>1JW]AV+NN_]E/M53O,?=W>CL0+H8L2+ZU*;E UN$CP*M#MF-DN
MK-KYT6ZE+'+!BUN<S*5V&_#_1B$3NX4[H)_U9W\!4$L#!!0    ( $2( U,3
MT&=^L@,  -D,   9    >&PO=V]R:W-H965T<R]S:&5E=#(X+GAM;*U7[V^;
M.A3]5RRT#ZVTEM^&5$FDI239GK2I6E^WSVYP BI@9IMF^^_?M2&\A+@9VGM?
M$FS..?8]OK8OTSWC+R*C5**?95&)F95)6=_9MMADM"3BEM6T@C=;QDLBH<EW
MMJ@Y):DFE87M.0ZV2Y)7UGRJ^Q[X?,H:6>05?>!(-&5)^*\%+=A^9KG6H>-K
MOLNDZK#GTYKLZ".53_4#AY;=JZ1Y22N1LPIQNIU9']R[=:SP&O MIWMQ](Q4
M),^,O:C&IW1F.6I"M* ;J10(_+W2>UH42@BF\:/3M/HA%?'X^:"^TK%#+,]$
MT'M6?,]3F<VLV$(IW9*FD%_9_B/MX@F5WH850O^B?8=U++1IA&1E1X89E'G5
M_I.?G0]'!- Q$[R.X T)P1L$OR/X8PE!1PC&$L*.$(Z- 7<$/':$J"-$>K%:
M=_72)$22^92S/>(*#6KJ0:^O9L.*Y)7*Q$?)X6T./#G_PB1%/KI!7R#K/U4;
M5E+T0#FZ9V4)F?*8$4[A+33K1A*=/6R+%D3D&T2J%"5YT4B:#NDM[RJADN2%
MN :%I\<$7;V[1N^0C81Z*U!>H:<JE^(]=,+SWQEK!&B*J2TA,C4_>]-%L6BC
M\-Z(PD>?624S@9952E,#?W69CR_P;7"TM]4[V+KP+@K^U52WR'?>(\_Q7,-\
M[B_3/Q,.=/=->C)^=,= 7XX?W41?_;?8UW\\^9.E\/L,][5>\%:&0V;F.C--
M>=5RL>:J4_MU[GH3-YS:K\>K=8[R(]<[!24F*>Q$IZBE >5/XN 4M3*@,/8&
M6NMSE(?#B=NC3OP*>K^"BWZU>_L&[?4I3M,;\DHY7$J'70O7F9"P3?-J=X>N
M8-^V_=<F=]N1PN,)1I$?1O[0.P,08^P$DWA@C$D1PZT[='!M4HS<&(>>V9ZP
MMR>\:,^RK OVBX(=DFU>$*O5F2CT6<AD!D??;RP)S^8U<?U!E,DYR'4<'P_-
M,, ")XJ=@14&F#OQ8FPV O=&X(M&'$[^_R=3L"E3@B".!L$D!B"&#(@Q'IAC
M5G0#/,P4DV+L1Y.C53DQ*.H-BD9L)!5WRHJ"<(%J2 _M@=&"5BT^FH=S&PRV
M?#(&M#*!!O:LH_,3QAQNW(<;C\J'\0''8P(> UJ90,. 39C)9!"S?51)E93O
M=)$LT(8UE6ROG+ZWK\,_Z/)ST+]P[Y:NH7\%=7M;9O\KWQ;]<.ON<CA)"KJ%
MH9S;"#*2MX5TVY"LUG7<,Y-0%>K'#+X]*%< >+]E4,MU#35 _S4S_P=02P,$
M%     @ 1(@#4QQW&>V+!   %A,  !D   !X;"]W;W)K<VAE971S+W-H965T
M,CDN>&ULS5C;;MLX$/T5PNA# B21J)OMPC'@V'6;Q:9K)&GW8;$/M$1'W$JB
M2U)Q NS'[U"2)26ZU$B38E]LW@XY9V;(0W&RX^*;#"E5Z"&.$GD^")7:OC<,
MZ8<T)O*,;VD"/1LN8J*@*NX,N164!!DHC@S+-#TC)BP93"=9VTI,)SQ5$4OH
M2B"9QC$1CQ<TXKOS 1[L&Z[97:AT@S&=;,D=O:'JRW8EH&:4LP0LIHED/$&"
M;LX',_Q^:66 ;,171G>R5D::RIKS;[IR&9P/3&T1C:BO]!0$_N[IG$:1G@GL
M^%Y,.BC7U,!Z>3_[,B,/9-9$TCF/_F2!"L\'HP$*Z(:DD;KFNT^T(.3J^7P>
MR>P7[8JQY@#YJ50\+L!@0<R2_)\\%(ZH ;#3 ; *@'4HP"X ]J$ IP XAP+<
M N >"O *@)?Y/G=6YND%460Z$7R'A!X-L^E"%JX,#0YFB<ZL&R6@EP%.33]S
M19&#3M%%*J%+2C3G\9HE1,==HJ,%581%$MW2!Y62Z!A&?KE9H*-WQ^@=8@FZ
M#7DJ21+(B:' '#VIX1=+7^1+6QU+_T:2,V19)\@R+=P"G_\ G@+<-COABY^#
M?S@<;K; E_WP!?4!CMM6-R""91BM,HQ6-I_3,=^*/,)V5Q(ICF;^]Y0)6D:4
MRA/T&<XHOD%S(L-]?W"";KDB49OK\L6\;#%]-MU/L35TL#TQ[NLN:@XSRQ%/
M:-@E#;N71EL2GD E42RY WZZ*%E 1=:#9D(0:,^8P[!05W12SF*>)CGA#N@)
M^IV1-8N8>FSC;S>(G0Z'WG/ZS5$=])V2OM-+?Q\99"_0IW0MT5]7-%Y3\7=/
MAKCEW.[+7%OSYRVX4VZHZ$V."[=!VQH[V++:N7NE?=XOS. +[T<9_,3(86GD
M\# G9A9(ECOQ Y35([I,%!54*G0I90I!Y"(KD75$P?Q4!U(SN D)C$)'D*<R
M*QZWV9_;X=;L'WGV>.RVVS\J[1^];A(\HR;WW.#$+\FUF3]JNM_SAN:XW?QQ
M:?[X[8Z'Z^QT@ #\D2J?QSJGOI(HA=A\@MM'&XEQ(P:N-3([]C@V*\4U?RK3
M/PHNV^74;!B$;7OD##LLJMT!\"OZM79V]FS 8LDG*6![G=ZKA [W*]W_1"+F
MN"E^I\/N[*@4$+]$ E>"WS-]FR<1;,;\@R+KN$S@$(+&F>]K0D $FB"]MQ%5
MD-JSX!^X0VKV>J@"]@QV;%MVS0N[ZMEU:H\["56:AOM%[2/GP8Y%$9!(A1_"
M5T#=V,K =J.<AE&>TVE3I87X)6+X&D[NRJ96<FZ#G&UWDJN$%/<KZ=N16]!<
M%] M>2AW!^M()Z^93FXGN4J \8$*_/J1TS>+%6%!*YMA<[=WAZJ28]ROQYT7
M/O0O@@]GZA.X3M3:KL@#B]/XD'LAKD05'ZBJ;WVI6>*FHF+''H\Z;F56):E6
MOZ3^JGO-LK#CR>6W^]2W*@6V^A7XI7>"I=6460NVV7.#C-H+@7XQNB+BCL'W
M?40W@#//AA 3D3_"Y!7%M]FCP9HKQ>.L&%("SM0#H'_#N=I7]#M$^10V_0]0
M2P,$%     @ 1(@#4Y9,,"Y>!   9A   !D   !X;"]W;W)K<VAE971S+W-H
M965T,S N>&ULK5C;;MLX$/T5PNA#"R212-WLP#;@2[9-T7:-)-U]6.P#+=,V
M44IT22I._GY'LB(I*XGQ+OH2DQ+/S)GA\(B3\5&J'WK/F$%/B4CU9+ WYG#M
M.#K>LX3J*WE@*;S92I50 U.U<_1!,;HI0(EPB.N&3D)Y.IB.BV<K-1W+S B>
MLI5".DL2JI[G3,CC9( '+P_N^&YO\@?.='R@.W;/S/?#2L',J:QL>,)2S66*
M%-M.!C-\?4."'%"L^(.SHVZ,41[*6LH?^>1V,QFX.2,F6&QR$Q1^'MF""9%;
M AX_2Z.#RF<.;(Y?K/]6! _!K*EF"RG^Y!NSGPR& [1A6YH)<R>/GU@94$$P
MED(7?]&Q7.L.4)QI(Y,2# P2GIY^Z5.9B 8 ^ST 4@+(N0"O!'CG OP2X)\+
M"$I $;ISBKU(W)(:.ATK>40J7PW6\D&1_0(-^>)I7BCW1L%;#C@S_28-0SZZ
M1/-,PRNMT4(F:Y[2?!LU/)\)(>-BAN06K3(5[V%?T$KQF"$H5&3V#,WBGQG7
M_&75'3WP#7J_9(9RH3^ E>_W2_3^W0?T#O$4/>QEIFFZT6/'0 @Y$2<NZ<Y/
M=$D/W<\TO4*$7"#B$MP!7[P!SP#NN;WPY?EPMP-^8X<O60QPW 5W8-NJO2/5
MWI'"GM=C;Z8U,QK.&B1?L<VUQ:17F?0*DWZ/R8]2;HY<B*[4GI!A@<SUYW'J
MNQ$>01X?FSEH+\-D& 6D6O:*F%\1\ZVQ?N%TS054&(. -<B:/=Z@,AM8X_T&
M4AQ3O4<Q5#O?,%54>E?T04=8D8^]U]$OV\O<[L##BF%H93@K=Q=Y2_0I6VOT
MUU>6K)GZVQ)]5-F.?E4!#2N30RO=1:842TV^1V"ZZX /6QDB_BCJ3M*H\CJR
M>KU-#4UW?"V8Q?')1-!P[+E1U+,]V*T%U/V_1V9>0IL^R1 /_:#':4.UL=7I
M[Z"Z"@F9[BX-4XDEZM)0DP+&WJB'0"T]F%@)/$A#1>FV*J!._Z2==AR2 /<P
MJ)4*>[]2$7"M--@_JX1!$@Q/=^70J@[STF0SRL@=>3TQUNJ$[?+T0D74L79Z
M#UK>@S ,>[S7RH/MTO.E*J__E(JP128,W)X#CFNIPM&99. :R%2NB(8^O9F9
MJ'T 0W?80Z86.6Q7N7\?O[=8#-LL@CX-J#4/VT7O= 1%^QAT4FBK'R&8].@
MJ=6/V-4O_X">H0*D0PA'/B8]MP)2"R&Q"^&*/D/; MZ-1.6GLKK*,GV!/BJI
M._>$=.BBYPW]GD(EC4N971D7^77"FHNV(EZ&ON?W.*X%D=CO;F??9>:EH5>Q
MO[[,O*902R>Q2V=7$W$!DP8?]*!HJD\G^ +=0)K,,X+O-U-,PS;>0@G#T8;N
MH!A2^*1W1M#66QR&(+D]$=2*2^R*>SI4AY<VY^U4MB]\G87M-%JTO /_2M6.
M0X,EV!: [E4$=M2IJ3U-C#P47=M:&N@!B^&>4:"2+X#W6PF=6SG)&\'J7PO3
M?P!02P,$%     @ 1(@#4P$G5NJ0 P  @0T  !D   !X;"]W;W)K<VAE971S
M+W-H965T,S$N>&ULQ5==;]LV%/TK%UHQI$!BB;(D*YUMP(GM)$/3!K&S/0Q[
MH"W:)DJ1+DG%Z; ?/^HCLEM+BI8%V(LM4O<<GDL>7E+]G9!?U(80#4\QXVI@
M;;3>?K!MM=R0&*N.V!)NWJR$C+$V3;FVU582'&6@F-FNXP1VC"FWAOVL[TX.
M^R+1C')R)T$E<8SEMPO"Q&Y@(>NYXYZN-SKML(?]+5Z3&=$/VSMI6G;)$M&8
M<$4%!TE6 VN$/EPC+P5D$;]1LE,'SY"FLA#B2]JXB0:6DRHBC"QU2H'-WR.Y
M)(RE3$;'UX+4*L=,@8?/S^S3+'F3S (K<BG8[S32FX$56A"1%4Z8OA>[:U(D
MY*=\2\%4]@N[(M:Q8)DH+>(";!3$E.?_^*F8B . BVH ;@%PVP*Z!:#;%N 5
M *\MP"\ ?EM 4 ""MH!> >BU!80%(,Q6-U^.;"W'6.-A7XH=R#3:L*4/F2$R
MM%E"RE/OSK0T;ZG!Z>$GH0GX< 970D0[RAA@'L%GO2$2;KC&?$T7C,!(*:(5
MG(R)QI0IF),GG6#V'MX!Y3#?B$09G#J%GW\*NX'W2]I[:]B,/57?UD9H.IR]
M+$1=Y*+<&E&_8MX!UST%UW'1PVP,)^_>5[!<_@N6R<,]G!3BJKC&+W EAJOK
MO*1HTI[%J6>9OHF6JS?1<MW,,B9+PX(:6&QCR-*5;NE*-Z/U:FB?S7@*H^77
MA$H2P3B1E*_ACD@JHJI)RQF#C#&MV(]#-T2AY_?MQPHEW5))MU')E')J=LA'
M4V"CXPUQ"J: FO+(X3*1DO#E-YA+S!7#66&^,F<'G'P42E5.;?=(L5,MUBO%
M>HUB1[&0FOZ5#RY657KG0F-6Y7_O2 SRG;V>W-['0>&/,=,\QC^(Z3H_!EV]
M,-IWV?ME]GYS]L]6Z8[A.EDH^..6Q LB_VPP9%!R!V]NR.!H(E)#UF79*Y7T
M6ACRC%4;LI17):A7L3*U>L)23_A_;9!I>.22,Z].[WFI]_QU+H&_89)(<REL
MXQOD[,]7YS\YQPQ;'$N5)UQ.?GZX49R@4U/4T,&IC]["12^(0\?B4">HT;:O
M_:BY^#>MT,.GF_ED#+/Y:#Z9-:W/OKZCY@+_BIU]@8XK-_)=M\Z::%^_47,!
M?_WFOD 5)34(CB39!U?%]./D%LLUY0H861F<T^F9\B#S^W[>T&*;W1X70IN[
M:/:X,=](1*8!YOU*F!MDT4@OI.57U_ ?4$L#!!0    ( $2( U,83F&_?@(
M ,4%   9    >&PO=V]R:W-H965T<R]S:&5E=#,R+GAM;)U4VU+;,!#]E1T/
M#S!3\"6Q29DD,TGHA<[0,E#:9R7>Q"JR9"09P]]W)3LF+8'I],6Z[3E[CJ7=
M<:/TG2D0+3R60II)4%A;G86A6158,G.B*I1TLE:Z9):6>A.:2B/+/:@481)%
M65@R+H/IV.]=Z>E8U59PB5<:3%V63#_-4:AF$L3!=N.:;PKK-L+IN&(;O$%[
M6UUI6H4]2\Y+E(8K"1K7DV 6G\TS%^\#?G!LS,X<G).E4G=N<9%/@L@)0H$K
MZQ@8#0^X0"$<$<FX[SB#/J4#[LZW[!^]=_*R9 872OSDN2TFP2B '->L%O9:
M-9^Q\Y,ZOI42QG^AZ6*C %:UL:KLP*2@Y+(=V6/W'W8 2?P*(.D B=?=)O(J
MSYEET[%6#6@736QNXJUZ-(GCTEW*C=5TR@EGIU^514CA&#XIE3=<"& RAV^V
M0 T7TC*YX4N!,#,&K:&P14%;:(!+H!A8,*V?N-S K%2UM*#6ST2'YV@9%^8(
M#ESX]T+5ALC-.+0DW*4/5YW(>2LR>45D!I=*VL+ !YEC_B<^),.]ZV3K>IZ\
M2?BEEB<PB-Y!$B7Q[<TY'!X<O4$[Z'_FP-,.7Z'=6M_GL$5F'NDJY6$:)Z/3
M-!F'#WLR#ON,PW_*2*_[ON8:<\AK[>[#74Z%FJM\GYB6--T1DXSBT3#=+R;M
MQ:1OBJ$RH2*0]&RU1KEZ JN9-(*UY9?_HM=,Y6SW/H#TA:+CP3#*]@O*>D'9
M?]]']N(^AM%I_#[^*V.X4UHEZHUO( 96[K6W5=;O]CUJUI;F<WC;X"Z9WG!I
M0.":H-')*;G5;=-H%U95OE"7RE+9^VE!?1:U"Z#SM:)B[18N0=^YI[\!4$L#
M!!0    ( $2( U,;P6V#N@4  /$=   9    >&PO=V]R:W-H965T<R]S:&5E
M=#,S+GAM;+696V_;-A3'OPIA[*$%FDJ\Z%8X!M)DZSHL7="T*X9A#XQ-VT(E
MT9.HN!WVX4==(MJB2,E)]I)(\CE'?U+G_'1$SO<\_UIL&1/@6YIDQ?EL*\3N
MC>,4RRU+:?&:[U@F?UGS/*5"GN8;I]CEC*YJIS1QD.OZ3DKC;+:8U]=N\L6<
MER*),W:3@Z),4YI_?\L2OC^?P=G#A8_Q9BNJ"\YBOJ,;=LO$Y]U-+L^<+LHJ
M3EE6Q#P#.5N?SR[@FTL25 ZUQ>\QVQ<'QZ :RAWG7ZN3]ZOSF5LI8@E;BBH$
ME?_NV25+DBJ2U/%W&W36W;-R/#Q^B/Y3/7@YF#M:L$N>?(E78GL^"V=@Q=:T
M3,1'OO^9M0/RJGA+GA3U7[!O;=T96):%X&GK+!6D<=;\I]_:B3AP0)[! ;4.
MJ.< B<$!MPZX'FBCK![6%15T,<_Y'N25M8Q6'=1S4WO+T<19]1AO12Y_C:6?
M6'S@@@$/G(%WG*_V<9( FJW ;V++<O ^$S3;Q'<) Q=%P40AS?1KC>VG+<U4
MC!=73- X*5Y*C\^W5^#%#R_!#R#.I!DO"WF'8NX(J;[2X"Q;I6\;I<B@U ?7
M/!/; OR8K=CJV-^1H^Z&CAZ&_A99 _Y29J\!=E\!Y"(XH.?2[G[%EM(=UNZN
M10[NG@2NXQ%#O'<Y+P:GI7'S:[>J*N\7'@EQ-'?N#\7J5HB02%D=:2*=)F+5
M=+%<EFF94,%6X"+EN8C_H57U#<EL(GD' LX@AK[7TSEDYD)B$.IU0CVKT ],
M#&GRM)L1Z >D)TFW@@1[[K BOU/D6Q5=T_PK$W&V.?O(F@G42^?/:Y;>L?PO
M2_8$W>V"QV5/H TNPFYO NPV1WK"3D_X;)D3:K?W_: G<< &&21&G<3H,3D3
MZ87DXYZ:2%.#H4$-=!6)7:N>SP5;EPGX-5XS\.(/1O.7@Y"T!X$N^"Y="TM*
MP8-W [0&^U*_!.43I/<LER]U4#82DTIBSJHN02:X3:P]/FJT@@BD#=IA"%;T
MNU4\4N*1_?'R;,G3'9/OMXM-SICL/::5'%3$AH]$-M1I''K])&J-#K,(!:8L
M4L2&SX=L. !C%/5+;] *AP:ABMCP4<ANO8Y>=Y[?EZ0C&R.#( 5L:"?VT[/=
M'A^WV8Y/R':%?VCGOSW;P;_@6JI/RW12 2C(0SOE)R++'@2-$TLA'8XP?70:
MZ+>ITX 4N=%SD'LDB#<Z#4B!&]G!>BGGH!2R+;_E:[&G.7NE=1^39D#!%MEA
M:R1AZW=8SA CU.]>6S//:':L2Q$:V0E]"@V1SN,S@K5F:<@,^\0S2%7@1G9P
M&WC8>AV]2L)(FS^=T9$7$H,FQ6AD9_3$Q+8'F="2( 5I]#]#>B1^,*Y5,1G9
MF?Q0?.!&)F"UXC*IYA1\D9V;YIH+]18V@(&6R'I/;>@^D.(OLO/WI'K3NVCY
M*1AJJ:V;&61B!6QL9ZVAUEJOX][?#6'_4]N=K$@1&]N)/:W21H),J#2LD([M
M2']RI8W$C]IV*'AHA_RQ;@@?+*78L?\IIRL&/M"43>KXL8(TMD/:O$BC8QIK
M:Q]8I[0I<12BL9VNIU0<UMOF,T_+;MW()%)1&]NI:JHW7Y\TV%^=:8VFZ%%D
MQG8R3ZPV>Q \7FR*Y=C.\J<7VZ0>^Y1B4\S'=N9?UJO4LMFL%[IDZA7;>#>I
M[H@"-K$#VUAW1$<VE'TCZB41T9$-7=?TM4T4MHF=N"<MD$*]^OP ]^MOR,SS
MB6^0JGA.1M9#AFN0Z VZ_-[61.E6A"!#?TD4IXF=TT].^Y'XZ/1/;G*P-FY_
M%XSD_6G?W$0!GSQ'3SX29)Q=1,&=V.$^81ZF?W03Q7#R' P?"1*9Y\$YV%23
MH]O4>XT%6/(R$\W^6G>UV\^\J'?Q'&7>;(9>TWP39P5(V%JZNJ\#^7#R9G^Q
M.1%\5V_1W7$AI[(^W#+9PN25@?Q]S;EX.*ENT.WR+OX#4$L#!!0    ( $2(
M U/5Y<B:CP(  /4&   9    >&PO=V]R:W-H965T<R]S:&5E=#,T+GAM;(V5
MVV[;, R&7T4P>M$"6WVVLR(QT";=U@';BAZV:R5F;*&RE$E*W>WI1\FND2%.
MNAM;!_[\2-J4IJU43[H&,.2EX4+/O-J8S87OZU4-#=7G<@,"=]92-=3@5%6^
MWBB@I1,UW(^"(/,;RH173-W:K2JF<FLX$W"KB-XV#56_KX#+=N:%WNO"':MJ
M8Q?\8KJA%=R#>=S<*ISY@Y>2-2 TDX(H6,^\R_!B/K'VSN '@U;OC(G-9"GE
MDYW<E#,OL $!AY6Q'BB^GF$.G%M'&,:OWJ<W(*UP=_SJ_:/+'7-94@USR7^R
MTM0S;^*1$M9TR\V=;#]#GT]J_:TDU^Y)VMXV\,AJJXUL>C%&T##1O>E+7X<=
M09@<$$2](/I?0=P+8I=H%YE+:T$-+:9*MD19:_1F!ZXV3HW9,&&_XKU1N,M0
M9XIOT@!)R7OR2<JR99P3*DKRW=2@R(TP5%1LR8%<:@U&H]FU-@R+!R6YK"H%
M53=LI#+L#W4?YOH%_S -Y'0!AC*NSU#U>+\@IR=GY(0P01YJN=5(T5/?8 8V
M#G_51WO511L=B/;+5IR3.'A'HB *1^3SX_(%K% >.GGPK]S'N@W%BX;B1<Y?
M<L#?'=@^8:(Z%,]5I\^<WC;4<Q&',:*?1ZCQ0(V/4I$5C;$Z5;K#RJ+TPS@K
M&5C)6ZQXC)7LLX(T&V>E RM]BY6,L=(]5CR)HW%6-K"RMUCI&"O;9^7I@>^5
M#ZS\*.L!>PGHVH :(^9[Q'"2)?DX<C(@)\>1TE!.8.A5NMN@T#7H6#"3O=\U
M";,\&8+IFFS?*DSBO2KY.X>2O1"^4E4QH0F'->J"\QQS5MTAVTV,W+AS:BD-
MGGIN6..]!,H:X/Y:XEG53^S1-]QTQ5]02P,$%     @ 1(@#4Y4Z5=;; @
M%0@  !D   !X;"]W;W)K<VAE971S+W-H965T,S4N>&ULS591;]HP$/XKIV@/
MK<1(2""$"I#:L*Z=1(5*VSU,>S#) 5:3F-I.H=)^_,Y)R)!(45\F]26YL^\[
M?]_Y8F>X%?)9K1$U[-(D4R-KK?7FPK95M,:4J;;88$8S2R%3ILF5*UMM)+*X
M *6)[3J.;Z>,9]9X6(S-Y'@H<IWP#&<25)ZF3+Y=82*V(ZMC[0?N^6JMS8 ]
M'F[8"N>H'S<S29Y=9XEYBIGB(@.)RY%UV;D( Q-?!#QQW*H#&XR2A1#/QKF-
M1Y9C"&&"D389&+U>,<0D,8F(QDN5TZJ7-,!#>Y_]NM!.6A9,82B2GSS6ZY$5
M6!#CDN6)OA?;&ZST]$R^2"2J>,*VBG4LB'*E15J!B4'*L_+-=E4=#@"=[CL
MMP*X'P5X%< KA);,"ED3IMEX*,46I(FF;,8H:E.@20W/S"[.M:193C@]OA,:
MP8>O<,VXA">6Y A39"J72'NE%9Q-4#.>*'C G<Y9<DZQE]%+SB7&X$W@)E\H
M^#7%=('R-\T]SB=P]N4<O@#/X&$M<L6R6 UM363-DG94$;LJB;GO$/O!LC:X
M;@M<Q^TTP,/3\ E&;? Z37";2E37R:WKY!;YNN_DF[&WLAY:[.7#5:XH2BE4
M+?@NA6I46:;UB[3FDWH==SPOZ/:']FL#':^FXYVDLU^ZY**X^21:\(UL_0:W
MF4:)2L.M4CGMDI"%Q18)MN N-SL%8@GS-:,H.*-]4H5YWL2_Y-$[X!_XWF#0
M:^;?K?EW/\8_%.F"9ZSD'PHZ'6*4A0L/DF5JB9(:[4B:VFNCYJK%-='O'I??
M]_O.H)E^KZ;?.TE_RG8\S=-_??\'Z%#!B%'1]V,GFLZOE_'_2].%_I%JM^<X
M3K/H?LVF_SEZ+NP?]5RGZPT"KYE_4/,//D7/A<%Q]?O!4?7M@T/;7)A3)E<\
M4Y#@DG!.NT_Z97D)E8X6F^(<7PA-MT)AKNG>1FD":'XIZ"RO'',UU'\"X[]0
M2P,$%     @ 1(@#4_LHE-7[ P  UQ(  !D   !X;"]W;W)K<VAE971S+W-H
M965T,S8N>&ULM5A;;^(X%/XK5C0/,U*WB0T), *D::MJ9[5=5>U<'D;[8,(!
MK"8Q8SLP(^V/7SM)<R'!7$1?()?O''_GLWT^\'C+Q8M< 2CT*XX2.7%62JT_
MNJX,5Q!3><W7D.@W"RYBJO2M6+IR+8#.LZ X<HGG!6Y,6>),Q]FS1S$=\U1%
M+(%'@60:QU3\OH&(;R<.=EX?/+'E2ID'[G2\IDMX!O5U_2CTG5MFF;,8$LEX
M@@0L)LXG_/&6!"8@0WQCL)6U:V1*F7'^8FX^SR>.9QA!!*$R*:C^VL M1)')
MI'G\+)(ZY9@FL'[]FOT^*UX7,Z,2;GGTG<W5:N(,'32'!4TC]<2W?T)1D&_R
MA3R2V2?:%EC/06$J%8^+8,T@9DG^37\50M0"<']/ "D"R+$!O2*@EQ6:,\O*
MNJ.*3L>";Y$P:)W-7&3:9-&Z&I:8:7Q60K]E.DY-_^$*4(#^0/>4"?2-1BF@
M!Z R%: G2\GF&[Y ]RRA2<AHA#Y)"1I0H.?(3 IZ@C 5@B5+=$,ED^C]'2C*
M(OE!)_KZ?(?>O_N WB&6H"\KGDJ:S.785;H.P\8-"\XW.6>RA_-?:7*->MX5
M(A[!'>&W]O ["'4XSL*]9KBKU2LE)*6$),O7WY/O@8H77>0L B1-]4PQZ*PJ
M3Q-D:<SVVDS[ Z^O*]ATC-XK1^]91Z]FYZHF_H\'B&<@_D7_H3K@<[).E;Q"
M?\,&(H1+F$6%?LFC;^5Q2^4*Z?E$H;F GRG;T,BLH"XE\E1^70DO&/5+)?)I
M[+?T&A!"_&Z]_)*G?YG9\EL<\6#DXQV.;937S2\H^056?E^XHE$7GZ UDC\:
M!MX.GS8*DT'@];I)#4I2 _OD\D3I9:6G$X5<M_ Y"&JZ<!?/@461G*,-T: W
M+.D-S]-L>)"+#='@,BJYC-Y^/VK8 T_@-\I7*[I/=:,\9K=BK^K[WN7V:Y&K
MN:RPOZ-E!\KW>X-AMZ"X9E'XK20E1XE6=7IL;_6GB48.KCXKI,FQ\@-L-X2C
M&UR1ISXX&7FC%L<V;!_'RBNPW2SV;EC<=H9.3FW8/DZ5+V"[,9S2X["M[1<4
MCW8&7%D#/M,;<+OMM_C8($T^E2M@NRU<9&.>W^LJ>\!V?SAMVQXV#2NDR;&R
M#?QFOM$[1BU2.0.YH#.0=L_?5<L*:7*L+('8+>'XW]SX,#\;I,FO]I? ;A1[
M=RHY; I62)-/90K$;@JG-#?2;OA^0$:[+(^V!5+9 CG3%DB[WW=1.MH52.4*
MQ.X*%]F69[<X4ED#L5O#:9LV:/VS:BU"&R3GZ-9.'<R1CRYNR1*)(ECH&.]Z
MH)45^2E*?J/X.CN(F'&E>)Q=KH#JI6@ ^OV"<_5Z8\XVRK.LZ?]02P,$%
M  @ 1(@#4P%:"RY&!0  E!H  !D   !X;"]W;W)K<VAE971S+W-H965T,S<N
M>&ULI=GM;YLX& #P?\6*]F&3EH)?2,*41FKI;;=IG:IEW7TXW0<G<1M4P)EQ
MDMW]]6<(C:G,XZ#F2PN$QX]?X(<QT[U43^5:"(U^YUE17@[66F\^!$&Y7(N<
MEQ=R(PKSRX-4.==F5ST&Y48)OJJ#\BP@83@*<IX6@]FT/G:G9E.YU5E:B#N%
MRFV><_7OM<CD_G* !\\'OJ>/:UT="&;3#7\4<Z'O-W?*[ 7'4E9I+HHRE052
MXN%R<(4_)%%8!=1G_$S%OFQMHZHI"RF?JIW/J\M!6-5(9&*IJR*X^;<3B<BR
MJB13CU]-H8-CSBJPO?U<^L>Z\:8Q"UZ*1&9_I2N]OAQ,!F@E'O@VT]_E_D_1
M-"BJREO*K*S_HGUS;CA RVVI9=X$FQKD:7'XSW\W'=$*P P(($T Z1M FP!:
M-_10L[I9-USSV53)/5+5V::T:J/NFSK:M"8MJF&<:V5^34V<GGV36J Q&J);
MKIZ$YHM,H+E8;E6J4U&:X_.U5'JHA<H1+U;HJRP>#WM7.YYF]?GF8D)S_C+P
M[8TI+,W*=Z:(^_D->OOF'7J#T@+]6,MM:4HJIX$V]:]J$2R;NEX?ZDJ NG[9
M%A>(AN\1"0GN"$_\X3=B:<)Q'1Z^# ],KQV[CAR[CM3E,:"\J]ST3/J?6*%$
MEKJK.8?X41U?W4^[&1O%A$V#74=:>DQ+O6GO"W.[9G7>3^8V[>S'0PE1*S$>
M1=UIV3$MZYOVJRQ+T9F7.7F';-*=-SKFC;QY/_)4H9\\VXJNA)&3D(U#AKM3
MCHXI1^<-;#)R!C:FC $]/#ZF'9\[L,G8:2^-:7?:R3'MY.R!32;NP!(@;WS,
M&[]^8)/821C3"09Z&(=6N]";])H73^B'>0ZA&[&19:I+]/>MR!="_>,1 ;<T
MQ6>:T!30;EE$8\ $;"W"?HSZJ- 4\2(UE-AJA'MS!+N 79!"(+'U"/M!\L.
M78HB!EF$+4;8K]%I&K!+DAE?Z,*U)&&_27UP:(IX>=, B2U*N+=*, _8=0D:
M7\L2]KOD]P&[(D5L HVO-0G[4;J?H[GFVDQ@JLG.G<S,;&;),S3?+E;I+JTF
MKZ6A8Z';<YT>@A K%/$+U6-6$3I-)V$\ MI.K%W$;U<?0HBK%P,N,=*:1_6V
M"R:$N'@-\1A(;?4B?KW\B!"7+=/3$-;$TD7\=)U6A+A\D2@,H:ZV?A&_7WT8
M(:Y@$RBQ]8OT]@MFA+B #0F0V0)&_(#Y'2&N7*:C)] 06[V(7Z]$JHU41I)7
M:6&](GZO>FCASJ1P'(Z ;J76*>IWJM=KB"L5Q!2U3-'>3,%:4->I(8F!U!8J
MZH?*KP5UA<(Q#H&7$=IZW_,;=5H+ZCK%2 C-=JAUBO9^YP.UH!U28:C-UBG:
MVRF8"^I"-0136ZFH7RJ_%]0EBA$"=K55BIZ89LW1)[D3JLA%H='5HRB6%1:O
MP(-:HZC?J--X4'>6A<UC"&BL58N>F&7UL<-U"\C+K%FLMUF>-0P7+>@AQ"Q:
MS(^67XXFN+V>@%D,7%/,<L7.7*!*6 =9$W" F26+G;U&E3 7K1&0M[5&=?XB
M5<(Z5JDPU&0K%CMCG2IA+E5XPF*HP18KYL<JD7DNU#(UKRAW?"/4>_1-:O2Y
M6&;;E>F$?:K7*.'ENGZ=J3?^^+5-=SPSRO32A%G!F%^P'E=;QUR+Q<!3F5G&
M6.\%+/AB<R&#1MPJQGHKYKG8>C,66<8B/V/^2ZT)'OE[.6A],JB^U]QR]6CZ
M#F7BP82%%V-38W7X!'+8T7)3?T582*UE7F^N!5\)59U@?G^04C_O5!\FCA^B
M9O\#4$L#!!0    ( $2( U/X2XZI/0(  -,$   9    >&PO=V]R:W-H965T
M<R]S:&5E=#,X+GAM;(5444_;,!#^*Z>(!Y!&DZ:%(I1&6JDF-FD3HK ]N\FE
ML7#LSKY0^N]W=D+H1-E>$M_Y[KOO/I^=[8Q]<C4BP4NCM)M'-='V.HY=46,C
MW,AL4?-.96PCB$V[B=W6HBA#4J/B-$DNXT9('>59\-W9/#,M*:GQSH)KFT;8
M_0*5V<VC<?3JN)>;FKPCSK.MV. *Z7%[9]F*!Y12-JB=-!HL5O/H\_AZ,?7Q
M(>"GQ)T[6(/O9&W,DS>^EO,H\81084$>0?#O&6]0*0_$-'[WF-%0TB<>KE_1
MOX3>N9>U<'ACU"]94CV/KB(HL1*MHGNSN\6^GPN/5QCEPA=V?6P20=$Z,DV?
MS P:J;N_>.EU.$A(QQ\DI'U"&GAWA0++I2"19];LP/IH1O.+T&K(9G)2^T-9
MD>5=R7F4_S"$,(-S^"[L$Y)8*X05%JV5)-&Q?R&4T 6"J> 657E.YIRU\/M[
M6.*:#J/7>[@QFBQ+W0K%D'W<Z9*1I7)G< )2PT-M6B=TZ;*8N 5/)"YZNHN.
M;OH!W6^M'L$D^01IDHX?5TLX/3G[&R5F 085TD&%-,!./X!=MNB)&8VP1V'!
M6%#HCO+K@"X#D)_XYWQ\-9F.L_CY2/W)4'_RW_JB(K1O%*BVIMW44/'0!L]1
M-AWLQ0&;]&J6),?93 <VTW^R>3#$I]>\#80;CO@8A^D[1::SY)TB\<&,^NO.
M\[:1VK'.%><EHQDW8;LKU!EDMF%LUX;X$H1ES:\.6A_ ^Y7AT>T-?Q.&=RS_
M U!+ P04    " !$B -3?PGJL#D"  !;!0  &0   'AL+W=O<FMS:&5E=',O
M<VAE970S.2YX;6R-5-MNXC 0_14KZD,KM>1"8&D5(K6@U7:E7:'2[CZ;9$*L
M.C9K&VC_OF,G1%P"VI?$,YYS?,XDXV0KU;LN 0SYJ+C08Z\T9O7@^SHKH:*Z
M)U<@<*>0JJ(&0[7T]4H!S1VHXGX4!$._HDQX:>)R,Y4F<FTX$S!31*^KBJK/
M)^!R._9";Y=X8<O2V(2?)BNZA#F8M]5,8>2W+#FK0&@F!5%0C+W'\&$2VWI7
M\(?!5N^MB76RD/+=!L_YV NL(."0&<M \;6!"7!NB5#&OX;3:X^TP/WUCOV[
M\XY>%E3#1/*_+#?EV!MY)(>"KKEYD=L?T/@96+Y,<NV>9%O7#H<>R=;:R*H!
MHX**B?I-/YH^[ '"^ P@:@#1_P+Z#:#OC-;*G*TI-31-E-P29:N1S2Y<;QP:
MW3!AO^+<*-QEB#/I;VF C,@=>18;$$:JSX/U]10,95S?8/9M/B775S?DBC!!
M7DNYUE3D.O$-RK!D?M8<^50?&9TY\N=:]$@_N"51$(4=\,EE^!0RA(<.'AS"
M?33?=B!J.Q YOO@,WZLTE*.EQG*7GYI@Z CL6&S2^_[](/$W^ZI/B\(PC**V
MZD!<OQ77ORCND>.849$!P8$E<J$E!YT!)KITUER#/0EWT2@^TME5- RZ9<:M
MS/BBS/:'N24";QY9$+H3WJ4S/NTG]NI(YVE1&(R&Q_WT]WY]>^W\HFK)A"8<
M"L0%O6]H5-6C7 =&KMPT+*3!V7++$F\_4+8 ]PN)$]$$=L#:^S3] E!+ P04
M    " !$B -3ITZQ-7T%  !E&P  &0   'AL+W=O<FMS:&5E=',O<VAE970T
M,"YX;6S%6?]OZC80_U=.Z$WJDRA)S)?2BB*UP-O>U':HM'V:IOW@@H&HB<T<
M4]II?_S.3DB !2=M1?<+),[=^>[C\WW\I;,2\BF:,Z;@)0QX=%Z9*[4X<YQH
M/&<AC6IBP3A^F0H94H6O<N9$"\GHQ"B%@4-<M^6$U.>5;L>T#66W(Y8J\#D;
M2HB684CEZR4+Q.J\XE76#;?^;*YT@]/M+.B,C9BZ7PPEOCFIE8D?,A[Y@H-D
MT_/*A7<VJ!L%(_'@LU6T\0PZE$<AGO3+]\EYQ=4>L8"-E39!\>^9]5@0:$OH
MQU^)T4K:IU;<?%Y;_V:"QV >:<1Z(OCA3]3\O-*NP(1-Z3)0MV+U"TL":FI[
M8Q%$YA=6B:Q;@?$R4B),E-&#T.?Q/WU)@-A00#OY"B11(+L*C3T*]42AOJ-
M]O702!0:97MH)@HF=">.W0#7IXIV.U*L0&IIM*8?#/I&&_'RN4Z4D9+XU4<]
MU;T1BL$I',-(B?'3L<9\ CT18B)&U SE49\IZ@<1W+$7M:3!5Q2^'_7AZ,M7
M^ (.1',J600^AWONJZB*C?A\[0<!:D<=1Z&7NB]GG'AT&7M$]GA4AVO!U3R"
M 9^P28Y^WZ[?LN@[B$X*$5E#=$FL!G]=\AK4W2H0EW@Y_O3*J[MYX7RL]\&[
M>]\"HY[F2]W8:^RQ-]*CG:3)D+YBR5!P(27E,Z:?JS!XT:G#\L8]MNRYQK2N
M8,_=1NVTXSQO@IDC5*^UMH7Z.4*>NRLUR)%JU4Y2H:WX&VG\C=+Q;TV3#1#@
M\15R<5I1.:G";PNM@!/E9]109N8,F?0%?OIAZAJJ7#PSB74Z%@&<V0R^45_"
M PV6#(Y092*"@,H(%DS&4_!K7F[%P;0W$&B>U$@K'X-FBD'3BL%@-!S"']<L
M?&3R3TM.M5)[K4-CVO>CL5CB^U2*$*ZI?$*.'4I_S!#OZ13AY3,#8QY(=N^\
M9LUU?[*$>9*&>6*'+5P$XI6QN-3"<"G'<XP%A@'E&U[&N0!'IHKE#JJ]FQ:$
MIOY9/&ZG'K<//3!9E'HP0$RU(70P!J&JHQVC>%Z8=M_:1<-RF@9Y^K&*%L_7
M,@GON1GKNH=&%@NM+V.E=<K\SJC,S9@";SP77E'5EC+>QH+"^QB>-X(_L\A4
MN3B2GH@4MBIT0L$M&XL9]_]F^.$BU'.Z"G="T2!W)9$L;KS- E=K[[#%6LK=
M([4=*,D")9\5:#* N.Y?-\=+K_T#:G>M7CR>&>%['V3\G?D!_^#BC_OA,BPU
M93+B]0[.O.8/'G!,-@OM?I#M#C6*0<X8U;-3ZGM IB^E0<Z8V#LX%;\59+M#
MS6*0,_[U[,QXBSXA"^D)&5-P&>@RKO3*D^7!ZU[L2G-SD;R[1DYD6ODRVT%F
M7.E]D"P/6?/LKI$X4W S&Z]_P&O#A+[:4H=D?$WL#+DW==Y6[4C&HJ0\BW[.
M1"QPJ)A22,:<Q$Y/5C3+ES62<1@ISV&?A*;=H>*R1C)B)'8>0E_,@2'']?4H
M/HPI U[&3:0\-WT2>':'2J1B1GBD/.$=NFHGKNR<;9"=NETDM1UH1G[$3G[_
M9^4N<&U=N1OKRDT:A94[HV5BI^5D@ZD/4W#S>4?E#*.Y6>KI 3VZH(^!^7#)
M=&8.J.0( .5ILE;A2JQ0],H/_;Q=ZF5!]^Y_=ZD))F_6VP8@HVQBY\4/ W"_
M6%@!L'?O-?=#\ [-[4/+C+_K=OZ^$GQV?,=D"-^Y1L-_CL]=@+@>*5,NZQES
MUP_.W&_9VA=X8]O:.QO7!B'#O-#W-1&8@[3X1#AM3>^$+LQ-R$[[I7?6\W+:
M^][9(+[QR<S'%U#7F(8^CR!@4^S*K9U@Q9?QG4[\HL3"7%H\"J5$:![GC$Z8
MU +X?2J$6K_H#M*;M>Z_4$L#!!0    ( $2( U,[WLU*'0,  &H+   9
M>&PO=V]R:W-H965T<R]S:&5E=#0Q+GAM;,V676^;,!2&_XJ%=M%*#6 ""51)
MI*;MOJ1N5:MMUPZ<!*N F>TDK;0?/]M00I<0T8M(RP6QC<\YSWGQQYEL&7\2
M*8!$SWE6B*F52EE>.HZ(4\B)L%D)A7JS9#PG4G7YRA$E!Y(8HSQS/-<=.3FA
MA36;F+%[/INPM<QH ?<<B76>$_XRAXQMIQ:V7@<>Z"J5>L"934JR@D>0/\I[
MKGI.XR6A.12"L@)Q6$ZM*WPYQ[XV,#-^4MB*5AOI5!:,/>G.EV1JN9H(,HBE
M=D'4WP:N(<NT)\7QNW9J-3&U8;O]ZOVC25XELR "KEGVBR8RG5JAA1)8DG4F
M']CV,]0)!=I?S#)AGFA;SW4M%*^%9'EMK AR6E3_Y+D6HF4P[#+P:@//<%>!
M#.4-D60VX6R+N)ZMO.F&2=58*SA:Z*_R*+EZ2Y6=G'UC$E"$!NA1LOAIH!-,
MT#7+U5<7Q.A6OT+?2].]TC)2^8+.;D 2FHGSB2,5B';GQ'70>174ZP@Z0G>L
MD*E MT4"R5M[1R709.&]9C'WCCK\NBYL-'0OD.=Z^ -RD$@)!U$]C_@?-BH-
MC7^_PW^5NT!J60M)BH06*W1&BSK,.?J##H6JR"O/@?&L]\AFYGE1,,039W.
MR&^(_/<27:"M68.0#,@&N-I3")Z!QU0 *CF-P2 G+,L(%Z@$7D%K^IUDAS*H
M2,)6!N'(]H.H]3N<3- D$QQ-YA,GA<+N+6FP)VDPCMP.14<-Q*@/Q,E4'.VI
MB+W0QOYAZG%#/3Y*?5NS]1=OO"?>P NCJ$.]L.$(^W&<3+]P3[\@M,?A8>RH
MP8Z.8JN3?0GT/6LOVI<O#/SQ80SL[HYAMQ_(R?2K =XL0!?;HZ #O76#X),=
MCK7K-Z>C'X51QZ[ W@[*^V_.QQJEK6P4VF''CL*[2P?WNW5J2K+(H+^P^]<.
MQB,_\#J@=O<.[G?QM*!.)^R!FP?;PW_WO-,J?W+@*U/D"12S=2&K2J@9;0K)
MJZI\VDVOJM [PE=499?!4IFZ]E@)R*O"KNI(5IIB:L&D*LU,,U7%,' ]0;U?
M,E50U1T=H"FO9W\!4$L#!!0    ( $2( U/=>9]-_@(  -8)   9    >&PO
M=V]R:W-H965T<R]S:&5E=#0R+GAM;*U6:V_:,!3]*U:D2:W4)B'AU0J0@';:
M)K&AHFZ:IGTPR858.'9FFP+_?K834JA"8%J_$+_.\3WGAMS;VW"QD@F 0MN4
M,MEW$J6R>\^340(IEB[/@.F=!1<I5GHJEI[,!.#8@E+J!;[?]E),F#/HV;6I
M&/3X6E'"8"J07*<I%KL14+[I.PUGO_!$EHDR"]Z@E^$ES$ ]9U.A9U[)$I,4
MF"2<(0&+OC-LW(\;O@'8$]\);.3!&!DI<\Y79O(Y[CN^B0@H1,I08/UX@3%0
M:IAT''\*4J>\TP /QWOVCU:\%C/'$L:<_B"Q2OI.UT$Q+/":JB>^^02%H);A
MBSB5]A=MBK.^@Z*U5#PMP#J"E+#\B;>%$0> 1N<$("@ P:6 L "$5F@>F97U
M@!4>] 3?(&%.:S8SL-Y8M%9#F$GC3 F]2S1.#;YR!>@.W:*9XM'JUC@2HS%/
M]6LBL37Z%@VE3G)F)A(]FWW"D$H C2C6D%F4< H2?;,GT%20B+ EFO 8*+IZ
M (4)E=?FA@0+*&Z8XIU^%Q0:"H'9$LSX9L_P:P+I',3OGJ>T0!.F%Q5B1KF8
MX(28MKZ5J42B1Q9#?(SWM#&E.\'>G5%02_AES5P4^C<H\(-&13SCR^%^33AA
MF:S0\C5/\#UN,_WV:_LH60"Z^@E87%>Y5,_21CL-E"A$J76K2M?_,!Q):Y;2
MFI=)B\D+B8'%:$> QE7JZHE\U_<_5$GZ9]B1CE:IHU7+,R&,I.OTQ$M\1-DN
M*=NUE$]$KFX7 D#_[Q0(D H)K*#*FGHBW^U66W,.UJJUIE/JZ%R6XA=.]:>%
M$K6KTE!/TFRY0;=2Q!E<X#9K571+%=WZ!./MI0F^*RGOWBO!]40-MQ%4>G,.
MUNS46=/P7XN)_QXI/L.B<]P**W6< X9N]RTP5^(=5,@4Q-(V#A)%?,U47@[*
MU;(Y&=J2_&9]9)H66WE?:?*.9X+%DN@*26&A*7VWHS\4(F\B\HGBF:W#<ZYT
M5;?#1#=>(,P!O;_@NA87$W-!V<H-_@)02P,$%     @ 1(@#4T3JSQ<! P
M7PH  !D   !X;"]W;W)K<VAE971S+W-H965T-#,N>&ULS59;;YLP&/TK%MI#
M*S5<0X JB=2TNTK=JE;;'J8]./ E6 7,;)-TTG[\;$,)64B4/$0:#^#;=WS.
MP9=OO*;LF:<  KWD6<$G1BI$>6U9/$XAQ]RD)12R9T%9CH6LLJ7%2P8XT4%Y
M9KFV/;)R3 IC.M9M#VPZII7(2 $/#/$JSS'[/8.,KB>&8[PV/))E*E2#-1V7
M> E/(+Z6#TS6K!8E(3D4G- ",5A,C!OG>N:X*D"/^$9@S3MEI*3,*7U6E8_)
MQ+ 5(\@@%@H"R\\*;B'+%)+D\:L!-=HY56"W_(K^3HN78N:8PRW-OI-$I!,C
M-% ""UQEXI&N/T CR%=X,<VX?J-U,]8V4%QQ0?,F6#+(25%_\4MC1"? VQ?@
M-@':"*N>2+.\PP)/QXRN$5.C)9HJ:*DZ6I(CA?HK3X+)7B+CQ/0S%8 B-$!/
M@L;/ R4P0;<TEW^=8^W; #T"%XS$0O;H4>A+J7HXNK@#@4G&+_L&_;B'? [L
MY]@2DJ>:S8H;3K.:D[N'TPC=TT*D'+TM$DBVXRVIKQ7IOHJ<N0<!/U6%B3S[
M"KFVZ[Q!%N(I9L#K]P%\KS71T_C#/?@=[5QKOR!%,\<E^H/ZYJEIU["^AE7[
M9S7U[,")HK&UZJ$S;.D,3Z)SA=9Z<4(RP"M@<K.A)<.%0 F6/W^!"4,KG%6@
M:2<TRS#CJ 16$U<*-I[UJ:C9A!T546B&0;\(OQ7A'Q3Q7C&4"HZUTM^QT@E"
M+PK[68Q:%J-C6)S;P=&.@X[GF:,]%@8M^>"H=:#W:H9+?H*=P8Z= T=R<OQ^
M2F%+*3R5TKF]#7=7IV/:4??IUQ2UFJ*#FN3ML !RREJ->LP=^NX>;QU[<Y;;
MQS$YMZ<-CZT%:_MFX.Y1T+F-G/.<I WNUE'J!X&_9PLY[H:1^U\=I@V=+6N=
MT!PZ_PBQ.G=^#FRI,QN.8EH5HK[^V]8V>[JI<X;-\#KUNL=L2=1^A(4,M<U
MNLCJ;*:N"%KJ#&).A<Q'=#&5&2 P-4#V+ZC,(IJ*FJ#-*:=_ 5!+ P04
M" !$B -38!Z,*A<#  "7"P  &0   'AL+W=O<FMS:&5E=',O<VAE970T-"YX
M;6S-ELN.FS 4AE_%0EUTI"9@$@B,DDASZ56:*II1VT75A0,GP1K U':2J=2'
MKR\,H9-+R2)2-X"-S_'W_\;XC#>,/XH,0**G(B_%Q,FDK"Y=5R09%$3T606E
M>K-@O"!2-?G2%14'DIJ@(G=]SPO=@M#2F8Y-WXQ/QVPE<UK"C".Q*@K"?UU#
MSC83!SO/'?=TF4G=X4['%5G" \@OU8RKEMMD26D!I:"L1!P6$^<*7U[CH0XP
M([Y2V(C6,])2YHP]ZL;'=.)XF@AR2*1.0=1M#3>0YSJ3XOA9)W6:.75@^_DY
M^SLC7HF9$P$W+/]&4YE-G,A!*2S(*I?W;/,!:D&!SI>P7)@KVM1C/0<E*R%9
M40<K@H*6]DZ>:B-: 8-# 7X=X!MN.Y&AO"623,><;1#7HU4V_6"DFF@%1TN]
M*@^2J[=4Q<GI9R8!Q:B''B1+'GM:8(IN6*%671#C6P_-@)OE+Q.PP]#K6Y"$
MYN+BY=N,<!#H^QT4<^ _QJY4B'HB-ZEQKBV.?P G1'>LE)E ;\L4TK_C726M
MT><_Z[OVCR;\M"K[:."]0;[GXU?(1<(@VNN1_(/&OX')/SR0OZU>6&]H64]R
M@7ZC?1-9;ILW,'GUWEE/<1P'X=A=[\$9-CC#HSCW("2GB52+:&C>H(WY+B'M
MD35PM<_0DI-2HI2H=5\0RM&:Y"LPU"G+<\(%JH!;;BU@Z]D^$98F:HO 43\\
MH")H5 1'5;S7B$I"5RN#72L#;Q3MAP@;B+ +Q+D=#'<<]+U!/QSNAQ\U\*-.
MWX':P +EI!(GN#G:<=/;#Q,U,-&I,.=VU0*%_]80-QKBSOL\R4BYA,Y^QEW]
MQ-[VI^V=2'-N0VN@#H[BUM&#CZI0Q^H"Z"D;O4[8]K(WQ-&!S8+]+8G?C>3L
M-OH[VSV.^T%\0,#V%,+G.H;P[CDT\*+@T.)N#R+\?YU$>,]1%'I]_-):MU4K
M%<"7IB(4*&&K4MJRJ>EMJLXK6VMMA]N2]8[P)=6_-%BH4*\_4B9R6P7:AF25
MJ;SF3*HZSCQFJG(&K@>H]PNFJJ^ZH2=H:O'I'U!+ P04    " !$B -3D>%9
M,ZT"  "6!P  &0   'AL+W=O<FMS:&5E=',O<VAE970T-2YX;6R5E6UOVC 0
MQ[_**5*E5AHDA(=V%2 5VFF;U FU:J=IV@N37(B%$V>V@?+M=W;2#*HTHF_
M3_]_[G=.[L8[J=8Z133PDHE<3[S4F.+:]W648L9T5Q:8TTXB5<8,3=7*UX5"
M%CM1)OPP"$9^QGCN3<=N;:&F8[DQ@N>X4* W6<;4?H9"[B9>SWM=>."KU-@%
M?SHNV H?T3P5"T4SOW:)>8:YYC('A<G$N^E=ST?VO#OPS'&G#\9@2992KNWD
M6SSQ AL0"HR,=6#TM\4Y"F&-*(R_E:=7/](*#\>O[E\<.[$LF<:Y%#]Y;-*)
M=^5!C G;"/,@=U^QXAE:OT@*[7YA5YT-/(@VVLBL$E,$&<_+?_92Y>% $([>
M$825(#Q5T*\$?0=:1N:P;IEAT[&2.U#V-+G9@<N-4Q,-S^TM/AI%NYQT9OI#
M&H3/T(%'(Z-UQV8DAKG,Z"W1S"6Z S>:[KBP$PU/=I_G8%*$9R8VY1F9P *5
M>Z?R"$LO.+]%P[C0%V1QM)LRA1I^WV.V1/5G[!OBL-'X417SK(PY?"?F$=S+
MW*0:[O(8XV.]3_QU$L+7),S"5L/OF[P+_> 3A$'8:XAG?KH\: FG7]])W_D-
MWO%[X'K=210B)=H@Y<J 8@:;$M5N%'3#\*R)IUW6ZPYZ9RT<@YICT.IS]U+0
MQTKOB^ )PODO9.JB":+=)80]"37T LC*:^_U(69[W03V8:O+!JLCV&$-.SP-
M=BL%?12"FWT3:[O)D%(?--Y8NZY_U;U\JSNB&-44H],H8K[E,>8Q[#F*N(FD
MW2CH!LT@'Y:5'/Y!B<M0K5SEUQ#)36[*#[U>K9O+C:NI;]9GU'3*'O'?INQ8
M]TRM.)4X@0E9!MU+RKDJNT Y,;)PA70I#95E-TRI<:*R!V@_D51,JXE]0-V*
MI_\ 4$L#!!0    ( $2( U.7B3K' @,  ,()   9    >&PO=V]R:W-H965T
M<R]S:&5E=#0V+GAM;*U676O;,!3]*Q?#H(75=IPX;482:+.,;= 16KH]C#VH
M\4TL*EF>)#?IO]^5[+H?N&XW]I+HZQS=<Z[M>Z<[I6],CFAA+T5A9D%N;?DA
MBLPZ1\E,J$HL:&>CM&26IGH;F5(CRSQ(BBB)XW$D&2^"^=2OK?1\JBHK>($K
M#::2DNF[,Q1J-PL&P?W"!=_FUBU$\VG)MGB)]JI<:9I%+4O&)1:&JP(T;F;!
MZ>##8A [@#_QG>/./!J#DW*MU(V;?,EF0>PB0H%KZR@8_=WB H5P3!3'[X8T
M:.]TP,?C>_9/7CR)N68&%TK\X)G-9\%) !EN6"7LA=I]QD90ZOC62AC_"[OF
M;!S NC)6R09,$4A>U/]LWQCQ"$ \W8"D 23/ :,7 ,,&,/1"Z\B\K(_,LOE4
MJQUH=YK8W,![X]&DAA<NC9=6TRXGG)U_4Q9A D=P:=7ZYL@YDL%"27I,#/-&
M'\&IH227;F+@RNU;!4MC.9F(8'.$3XQK^,Y$A: V?F5YN5K!P4>TC MS2!Q+
M60IUAUC? ZM*KW.Z"U:"%?#S'.4UZE_3R)(D%UBT;L(_J\-/7@A_#.>JL+F!
M99%A]A0?D16M'\F]'V=)+^'7J@AA&+^')$X&'?$LW@Z/>\(9MND9>K[1"WS+
M?4G/.UDN^ ;A0'JQAW#@51]V^=7/-X::HDO9OR"?B!JUHD9O$Y7Q6YYAD<$=
M1Y%UJ>DGBL,X?M<EY:]A3W2DK8ZTE^><%UQ6\H7']PGEN*4<]U)><'-SM-'T
MGO#"HD9C0=-;UF5-/Q%I''=:\QIL<-QGS7&KX_AM*;Y5@CXC@MN[+@W])&D<
MGJ2=(OIQHR0<#_M4G+0J3OH3S/9O3?"DI9S\KP3W$U&FDDYO^F&#,)WT63.(
M'PI'_#]2_ K+. W3Y[FJ=;P"3"?AI%M)]*@:2M1;WR086*NJL'4A:%?;1N34
ME]]GZV>N0?%5]H&F[F[.F=YRJH8"-T09A\?TH=!UPU!/K"I]S;U6EBJX'^;4
M9*%V!VA_HZCN-A-W0=NVS?\ 4$L#!!0    ( $2( U-XQ15C/@0  /,0   9
M    >&PO=V]R:W-H965T<R]S:&5E=#0W+GAM;+58WW.C-A#^5S2>>\C-Q $!
M!I.Q/>-?;=-I[C*77OO0Z8,,ZT /D"L)^^Z_KP0$&U"PZUY?;"2^7>WW:>5=
M>7*@[ N/  3ZFB89GPXB(7;WAL&#"%+"[^@.,OEF2UE*A!RR%X/O&)"P,$H3
MPS)-UTA)G UFDV+NB<TF-!=)G,$30SQ/4\*^+2"AA^D #UXG/L4OD5 3QFRR
M(R_P#.+S[HG)D5%[">,4,A[3##'83@=S?+_&(V50('Z+X<!/GI&BLJ'TBQH\
MA-.!J2*"! *A7!#YM8<E)(GR)./XNW(ZJ-=4AJ?/K]Y_*,A+,AO"84F3W^-0
M1-/!>(!"V)(\$9_HX2>H"!4!!C3AQ2<Z5%AS@(*<"YI6QC*"-,[*;_*U$N+$
M0/K1&UB5@=4V<-XPL"L#^](5G,K N72%46504#=*[H5P*R+(;,+H 3&%EM[4
M0Z%^82WUBC.5*,^"R;>QM!.S#U0 PB8:HGD0Y&F>$ $A^B@B8&A)4YE\D<J*
M/:"'+* IH)M?*.?O)5Z'4>_0S0H$B9,"]/EYA6[>O4?O4)RA7R.:<Y*%?&((
M&;H*P BJ,!=EF-8;8=KHD68BXFB=A1!J[%?]]FZ/O2$EJW6S7G5;6+T.?\ZS
M.V2;M\@R+:R)9WFYN:FC\]]67U^]>D,,NTXBN_#GO.%O01*2!:#;UM+0+0S5
MC]9^-L:V8\N@]Z=J=6&CL><Y9A.VZL)<Q[%';A.VUGD;>?[16X.E4[-TKF59
M&HY.6=K8][P6RR[,-;'E^"V6EWE;G_768#FJ68YZ6<X_+A_07 @6;W)!-@D@
M0=$389 )],<CI!M@?_:DC%LOXUXKIMOA-<2FZ;<V>:F!^;X_;FFI0=F.U<JK
MM0;EF7BL5]*K*7K74O2ZZXTQ'K48:E"^:SLMAA?Y6I_SU6 XKAF.^W/EI&3(
MLBV+<H:6.9.Y$GQ#\_ O6;Y2E3?7IY-?1^+W1E(6HZ!1C.*J8"5%P=J [*I
M]C9!0CB/MW% 5*>BK45^1RS+M%LYL^R";+>]-UW,T!ECJ[4W&I3E8E>_-]@\
M5G:S?W=2FF>"GU"6V[1E-)7=V7'?J$8YI9BV1IN=2-NJG(>LSD/6O9"F'">-
M#NZ5XX/LNH,B.<5P!RRF>NZ-K-&*@"_)#@VJFQX:D"X_=+">!+&.BEAG?^IO
M&WW?C_)F475XMV@%&X&>06H6BQBX1.YE6Z?.\% >I2$G"=S^BZ.,C]T$[F\G
MON]AKA9KBNRWMZL+ZJ1M%X)QNR;W^FG*<6P[<'_?\3^<XV[KT,G?LY#5><BZ
M%]*4X]B?X/X&Y;N=XU&G2]3D11?4D:$+T>1%GY]2"./D$I<">RENSURRDIM?
MMN+U;'U#GQ?WTM;\ M\OL69^I6[TQ:7QZ+[\.^"1L)<XXRB!K5S*O/-DM*R\
M89<#07?%%7)#A;R0%H\1D!"8 LCW6RJOD=5 +5#_SS'[!U!+ P04    " !$
MB -3E"YE0%$#  #$"@  &0   'AL+W=O<FMS:&5E=',O<VAE970T."YX;6RM
M5MMNVS@0_15":($8R.HN.0UL [5E8UN@NT$NVV=&&EM$*=)+4K';KU^24A3;
M451CVQ>;I.:<F3D<C6:RX^*;+ $4VE>4R:E3*K6]]CR9EU!AZ?(M,/UDS46%
ME=Z*C2>W G!A017U0M]/O0H3YLPF]NQ&S":\5I0PN!%(UE6%Q?<Y4+Z;.H'S
M?'!+-J4R!]YLLL4;N /UL+T1>N=U+ 6I@$G"&1*PGCH?@^O5V-A;@W\([.3!
M&IE,'CG_9C:?BJGCFX" 0JX, ]9_3[  2@V1#N/?EM/I7!K@X?J9?65SU[D\
M8@D+3K^20I53Y\I!!:QQ3=4MW_T);3Z)X<LYE?87[5I;WT%Y+16O6K".H"*L
M^<?[5H<#@.;I!X0M(#P%Q&\ HA80G>LA;@'QN1Z2%I"<"TA;0&JU;\2R2F=8
MX=E$\!T2QEJSF86]+HO6 A-F"NM."?V4:)R:_<45H"! ?Z!/+.<5H'N\!XDN
M,E"84(GN8:]J3$?:X.$N0Q?O1N@=(@S=E[R6F!5RXBD=AB'S\M;EO'$9ON$R
M0E\X4Z5$2U9 T8//AO'I -[3Z7<:A,\:S,-!PL\U<U'D7Z+0#X.>>!;GP_V^
M='[-^_+7O*^&X1GD&A[TP8^TC+IZBBQ?_ ;?2Q6AY5YW/PGH8@X,UD2-+M$]
M5YCV54Q#FEI2TPN?9E$4IA/OZ? :7AN%21 <&V4]3$D:'ALM7QNEL?_B[BCS
MN,L\'LQ\N5Z#;9,';Q*ZQ?KUNH6<LYQ0@DTSO40W(')@:D".84^A[R;^^[Y"
M'<8%J9OVXK*?X,9OX)8_P7UPXU/<D;1))VWR/Z5=Z$Y 6$W8!OV]!6$%EL9*
M?V1-Z>GRMJL1RFIAK%0)1G_"^QK/?#B,R/W0+]\P[")PK_SWHP$=TDZ']#>5
M&%9H!846A*([A56MN/A^"NH*L2^EX4#"P/4';W;<930>)'I@0D>^8>0'%#:P
MME?(2]/=S87-,<4LA[[;&K]ZBQ/?]T_ZP3E&J]=&\=6!49.:=_"5K4!L[#PD
M4<YKIIH&V9UV(]='.VF<G,^#ZT70<YX%U\MFHGJA;^:[+UALB"YL"FOMRG?'
MNN)$,S,U&\6W]AO_R)6>&.RRU&,F"&.@GZ^Y_LZW&^.@&UQG_P%02P,$%
M  @ 1(@#4SQZZG%) P  O L  !D   !X;"]W;W)K<VAE971S+W-H965T-#DN
M>&ULI9;=;MLX$(5?A1!ZT0*[D:@?2@IL XWM8K= ND&\:2^*O:"ML2U4(K4D
M%;= '[ZDI*B.Q+BI<V.+U#DSG,]C:28'+K[(/8!"7\N"R:FS5ZJZ=%VYV4-)
MY06O@.D[6RY*JO12[%Q9":!98RH+U_<\XI8T9\YLTNS=B-F$UZK(&=P().NR
MI.+;%13\,'6P\[!QF^_VRFRXLTE%=[ "=5?="+UR^RA97@*3.6=(P';JO,67
M2]P8&L7'' [RZ!J94M:<?S&+O[.IXYD300$;94)0_74/<R@*$TF?X_\NJ-/G
M-,;CZX?H[YKB=3%K*F'.BT]YIO93)W%0!EM:%^J6'_Z"KJ#(Q-OP0C:?Z-!I
M/0=M:JEXV9GU"<J<M=_T:P?BR*#CV U^9_"'AO )0] 9@N=F"#M#^-P,46=H
M2G?;VAMP"ZKH;"+X 0FCUM',14._<6M>.3.-LE)"W\VU3\T^< 4(^^A/M(*=
M;@"%;J'B0N5LI_=NX1Y8#>B=X"7ZIP)!S:\KT?I;)Z/K GKGZP4HFA?RC7;>
MK1;H]:LWZ!7*&?IWSVM)628GKM)G-IG=37>^J_9\_A/G"] U9VHOT9)ED%G\
MB]-^<L+O:E8],/\!V)5_,N#[FEV@P/L#^9Z/+>>9/]_NV<IY6?;EV=D?P0CZ
M[@F:>.$3\;K^L/VLK9$T1O.TNI]A/_#"9.+>'].RR#P2Q=%CV6(L\X,4Q^%C
MV=(B\S%)@E[VJ,JPKS(\6677^/H?T76Z1)^OH5R#^.\$PZB/'IW+L#5&OV)H
MD=D8CF56AA;9"8:DKY*<RQ!]1W<L5Y"AE:(*9/\\>0;DN$\?GPLY'M6;1D$X
MH#(?JQ*2^,$ \5B%$Q*D\0"Q11:3)$WMB).^QN0%B)>UT-/%[[!-^[SIN6S3
M<2^%)!HTYGRLPB3VTP';L2HDV!MV[U@5Q!$F=K+8^_F6]%[ ]CVM*/L=M/CH
M]8S/A=LYCY]V^N$PP#:WJD:-:U$1$@]42XLJ]DDR@.L>32,EB%TS!DJTX353
M[:NEW^U'S;?-@#78O\*7<VS97YC1M)E^?H9OY]IK*G:YGD\*V.I4WD6L&T&T
MHV*[4+QJ9J$U5WJR:B[W>KP&803Z_I;K>:A;F 3]P#[[ 5!+ P04    " !$
MB -3E2(4($,#  #J"P  &0   'AL+W=O<FMS:&5E=',O<VAE970U,"YX;6RM
M5EUOTS 4_2M6Q,.08(F=CZ936XFU13!I,*T,'A /7G/;1B1VL-T5)'X\MI.%
M+O'*QO;2V,XYY]Y[>I/<T8Z+[W(#H-#/LF!R[&V4JDY\7RXW4%)YS"M@^LZ*
MBY(JO15K7U8":&9)9>&3($C\DN;,FXSLV868C/A6%3F#"X'DMBRI^'4*!=^-
M/>S='ESFZXTR!_YD5-$U+$!=51="[_Q6)<M+8#+G# E8C;TW^&2.+<$B/N>P
MDWMK9$JYYOR[V;S/QEY@,H("ELI(4'VY@2D4A5'2>?QH1+TVIB'NKV_5W]KB
M=3'75,*4%U_R3&W&7NJA#%9T6ZA+OGL'34&QT5OR0MI?M&NP@8>66ZEXV9!U
M!F7.ZBO]V1BQ1] Z;@)I"*1+B.XAA TA?&B$J"%$#XT0-P1;NE_7;HV;444G
M(\%W2!BT5C,+Z[YE:[]R9AIEH82^FVN>FGS@"A FZ#5:P%HW@$*74'&A<K;6
M9^_9DI> W@I>HH\5"&K^7(F.9J!H7LB7&G*UF*&C%R_1"Y0S]&G#MY*R3(Y\
MI9,S(?QED\AIG0BY)Y$0G7.F-A+-60:9@S\[S$\.\'UM2NL,N77FE!P4/-NR
M8Q0&KQ )"';D,WTX/7"5\[3H\_^.?L>,L&V3T.I%]^@UC; RC<#;1G#]R[5.
M8G7,6^IF@A,<1"/_9M\[!RH*8WP7->NC2! F\5W4O(\*,1XD+>I.P5%;<'2P
MX*;;]5/0/!<2?3V'\AK$MP-VQJUZ_$QVUCKQ/^QTH!QV]E$N._NH W8F;<')
M_]J)?J,KEBO(T$)1!;)]$3W [T$;?O!,?@_Z'B4D#3I^.U!1& T[?O=143I(
MPX[?#M0P"E.WWVE;</H$O^=;H5UXC-'#-N[PF8P>]LJ.@Z3CS;0/(B3IMG4?
M%"9#TG&Y#TH2$KM-QL'?CV?P!)O/:$798US&>U]M_$P^-T+[K\?7."9AIUFG
M3APA<;>I7;B08-QY1.8N'(G2=-#QW-^;74H0:SLT2K3D6Z;J[U-[V@ZF;^PX
MUCD_Q2=3[#B?F4'6SDI_Y>LI^)R*=:['F0)6.E1P/-#M(>K!LMXH7MG)Z9HK
M/8?9Y48/XR ,0-]?<3T]-1L3H!WO)W\ 4$L#!!0    ( $2( U/Q>O#(M@(
M (D(   9    >&PO=V]R:W-H965T<R]S:&5E=#4Q+GAM;*566T_;,!C]*U;$
M TB#W)I+41L)VMW0V! =V\.T![?YFE@D=F:[+4C[\;.=D(62,EA?&MOYSO$Y
MQTV^C#:,WXH<0**[LJ!B;.525J>V+18YE%B<L JHNK-DO,1237EFBXH#3@VH
M+&S/<4*[Q(1:R<BL7?%DQ%:R(!2N.!*KLL3\_AP*MAE;KO6P<$VR7.H%.QE5
M.(,9R)OJBJN9W;*DI 0J"*.(PW)LG;FG$]?1 %/QC<!&=,9(6YDS=JLG'].Q
MY6A%4,!":@JL+FN80%%H)J7C5T-JM7MJ8'?\P/[.F%=FYEC A!7?22KSL15;
M*(4E7A7RFFT^0&,HT'P+5@CSBS9-K6.AQ4I(5C9@I: DM+[BNR:(#L =[ !X
M#<![*<!O +XQ6BLSMJ98XF3$V09Q7:W8],!D8]#*#:'Z&&>2J[M$X63RF4E
MKH>.T0PR=3P274/%N"0T4VN?&,V."Y5SBLZ$ "G0_!Z]!Y9Q7.5DH6HS?1:'
M4Y"8%.)(06YF4W1X<(0.$*'H:\Y6 M-4C&RIQ.HM[44C[+P6YNT0=K&B)\AW
MWB#/\=P>^.1Y^!06"NX:N/,8;JN(VIR\-B?/\ UV\'62P":)/D<U16@H]/.S
M3KPX'@R#D;WN*N\K\\(P;,L>*?1;A?ZS"K]4P+$YM^8D!?IQ">4<^,]G_ ]:
M]L'^_FN*X%_^^\IV^P]:A<'_^D>_T0TE4FF?22Q!M/_U%P04MMN'^P<4/G7N
M>:X;;0744^8&D7X,^@**6H71'@&]77'5&UZ33-SN&^^?3/S$<NBX V<KF*=5
MP="/X_Y<AJV^X1ZY7. *T]?$XCI_7[W._L$T'-VW1>CY\58P/551$$1;P=B=
M/J&;]"7F&:$"%;!4,.<D4LGRNN_5$\DJTSKF3*I&9(:Y^E8 K@O4_253[:.9
MZ&[4?GTD?P!02P,$%     @ 1(@#4SO_$D"3 P  G@P  !D   !X;"]W;W)K
M<VAE971S+W-H965T-3(N>&ULI5==CYLX%/TK%NK#C+0[8/,]2B)UDE3;2NE&
MD^WN0]4'!AR@!3MKFTGWWZ]M&"8!#XK2E\0?Y]SK<VSP97:D[ <O,!;@9UT1
M/K<*(0[WMLW3 M<)OZ,'3.3,GK(Z$;++<IL?&$XR3:HK&SE.8-=)2:S%3(]M
MV6)&&U&5!&\9X$U=)^R_!US1X]R"ULO 8YD70@W8B]DAR?$.BR^'+9,]NX^2
ME34FO*0$,+R?6^_A_1JZBJ 1?Y?XR$_:0$EYHO2'ZGS,YI:C5H0KG H5(I%_
MSWB)JTI%DNOXMPMJ]3D5\;3]$OV#%B_%/"4<+VGU3YF)8FY%%LCP/FDJ\4B/
M?^!.D*_BI;3B^A<<.ZQC@;3A@M8=6:Z@+DG[G_SLC#@AR#AF NH(:$CPWB"X
M'<&]-(/7$;Q+,_@=04NW6^W:N%4BDL6,T2-@"BVCJ89V7[.E7R51!V4GF)PM
M)4\L/E.! 43@=[##N3P  CSB V6B)+D<6Y4\R7.&\T3O*MW+V6=,&@QN5E@D
M9<5O)>K+;@5NWMV"=Z DX*^"-CPA&9_90JY/9;'3;BT/[5K0&VMQP88247"P
M)AG.#/S5-#^8X-O2E]X<]&+. YH,^*DA=\!U?@/(0="PGN7E=,<DY]>RKZ_.
M?F:&VY\45\?SWHC7[;QI6UMBH(GJS?2\@,AUO&AF/Y^Z98 Y@1_ZY[#5&(;<
M&(;>.6QM@"$81&X/.U/I]2J]294?R??N%;:A5::>@ILMH_(IE+U;\'6#ZR?,
MODW8Z?>)_&OM;(G^B3(_DLH&;AI0810/7%J-41!Z/@H'9II@* @=LYE!KS&8
MU+C\O 2;)"U*HHW\4#(NTD9<Y&/8YPBO]3$<B?*@'Z.!CV,4BL+ &?@X1H41
MB@='=SU&!4'@^687HUYA-*G078$M*XGH/"18 2[R,.XSQ-=Z&(\/1@3#@3M+
M \I#;C#P<(QR?<\9>FA .3#RS!Y"Y_6><R8U[G39M9&W5G6)=?#D H77FM<Q
MSTY@" ?/WM*$"H)X8)X!%<=#B]<&%'1<&+WA'GH5B29%_BD*S.0QI%F3"GZ1
M@:_W"KSZ8H'CE[SGP*%_IGL%#@^?&06'_AE041 ,[+-/ZJT:LUP7NARDM"&B
MO5#[T;Z8?J]+R,'X [Q?0L/X2A7?NKY[#=]6[IN$Y27AH,)[F<JY"^56L[88
M;CN"'G2U]T2%O+5TLY ?$)@I@)S?4UGQ=1V5H/\D6?P/4$L#!!0    ( $2(
M U,&L2,;.P,  &H3   -    >&PO<W1Y;&5S+GAM;-U8T6[:,!3]E<B=IE::
M&B!K2E9 VI J3=JF2NW#WBI#'+#DV)EC.NCCOF=?M2^9;QP2H+Z(]6$K"X+8
M]_B>>WQ]@PV#TJP$NYTS9H)E+F0Y)'-CBG=A6$[G+*?EN2J8M$BF=$Z-[>I9
M6!::T;0$IUR$O4XG#G/*)1D-Y"*_SDT93-5"FB&)&U/@;A_3(>G&;TG@Z,8J
M94-R?_KZVT*9JU>!NY^\.3GIW)]=[=I/*^",A%[2BP-(SSL=G!A C#P^C'P?
M-T9]Z:?^]>/G-OD&=XNMV3'R_D&Z]\C&B)-MXI9HRS&LZV$TR)1LRR(BSF"9
M:<Z"!RJ&9$P%GV@.7AG-N5@Y<P\,4R64#HRM1QNJ"Y;RT<%=UX-2K7ER+I6N
M8KL([G-2#]\!UCT0R(5H!/:(,XP&!36&:7EM.]7@RO@$"NKVW:JP"F>:KKJ]
M"](Z5#<;9*)TRG03IDO6IM% L SD:#Z;P]VH(@30&)7;1LKI3$E::5A[U U+
M.V5"W,)S_#7;XEYF&VO6@1633=,*JIN.QG6 ?Y/-<6_2]I[%&Q3\09D/"SL=
M6?6AR-B-9AE?5OUEU@C V+LX.RT*L7HO^$SFS$W^X("C 5W[!7.E^:.-!J4R
MM0:F2?# M.'33<MW38L[MC3K<EIFN.;>$6K^NWF>,<DT%9NB;>V_Y"P_6W%T
M^:\D5]\JNX*]&NO-^:6+O#@&D?$QB#R*FNP?@\CD18H,ZPU\XY2P=49HK &<
MQ8;D"YSJ1!LTF"RX,%S6O3E/4R:?'!4LO:$3^T-BB]^.3UE&%\+<->"0M.W/
M+.6+/&E&W4 BZE%M^Q-,KQLW!T$;B\N4+5DZKKMZ-JF:@6W8J/4%#KO(=77Y
M$<S'87X$,"P.I@#S<5Y8G/]I/GUT/@[#M/6]2!_UZ:,^SLN'C*L7%L?OD]C+
M/],DB:(XQC(Z'GL5C+&\Q3&\_6R8-O# XD"D/\LUOMIXA>RO VQ-]U4(-E.\
M$K&9XKD&Q)\W\$@2_VIC<< #6P6L=B"^/P[4E-\GBF!5,6W8$XPC28(A4(O^
M&HUC)#LQO/SK@STE490D?@0POX(HPA!X&G$$4P :,"2*JGUP9S\*U_M4V/Z[
M-OH-4$L#!!0    ( $2( U.7BKL<P    !,"   +    7W)E;',O+G)E;'.=
MDKENPS ,0'_%T)XP!] AB#-E\18$^0%6H@_8$@6*19V_K]JE<9 +&7D]/!+<
M'FE [3BDMHNI&/T04FE:U;@!2+8ECVG.D4*NU"P>-8?20$3;8T.P6BP^0"X9
M9K>]9!:G<Z17B%S7G:4]VR]/06^ KSI,<4)I2$LS#O#-TG\R]_,,-47E2B.5
M6QIXT^7^=N!)T:$B6!::1<G3HAVE?QW']I#3Z:]C(K1Z6^CY<6A4"H[<8R6,
M<6*T_C6"R0_L?@!02P,$%     @ 1(@#4TH^3BLD!   4",   \   !X;"]W
M;W)K8F]O:RYX;6S%FEUOVS840/\*H:?T(;,ET<X'Z@);LG8&VC2(@[P.M$3'
M1"C2(*FD[:_?%05C9#=>],74DR6*IHXNI7M(2N_?M'G9:OU"OG52V56Q=^YP
M/9O99L\[9G_3!Z[@R$Z;CCG8-<\S>S"<M7;/N>ODK)K/E[.."55\>']LZ][,
MPAWM>..$5E X%#P)_F;_/3[LDE=AQ59(X;ZO"K\M>4$ZH40G?O!V5<P+8O?Z
M[2]MQ ^M').;QF@I5T4Y'GCBQHGF/\6; ?*1;:TO<6S[P !D52SGT.!.&.M\
M#=\^ \97#I7'O=[ICT(Z;FZ9XY^,[@]"/0_-P%7,@LOP<3C^CD&\-K\21KW;
MB8;?ZJ;ON')C' V7 Z"R>W&P!5&LXZOB6(7\KEKRIW(0)+)68U-0=[A2./6Z
M':_: 6X00W,MX(!9MQ[\=) WL*^E:.'L+?F#2:8:3GQP+3F[Z0/("H&L)H3\
MNPH@:P2RS@BY&2"&/UBB=^1&=X< DB*0=#+(S9Z9 '*!0"ZFBR2S^P!RB4 N
M3PMY!]F1E.0<[D<K/-N]X1;^\_/#?8$P7F1@K(#Q@3<^$36-[B$1J6> C2 O
M$<C+#) U0-[!"=:JT1TG]]P,#TVG%0D@KQ#(JPR0=.CMW@K%K1WPMD*--<-4
M/L=R^3P#Y0(H/VG=O@DI"0/U?'5[".=:N1 35<Z)G>,QEX#YD0E#GICL.?G"
MF>V-?]!#3$PZY8FMXS$O /,+,R\<!B$2I,.;W@@G>-3GF'7*$VO'4UX"Y5J]
M0DUMOH=DF&K*$[O&DUT!V<;IYN5\RRRD\T&%7%FH'6)BLBE/;)LQD<^!$])C
MW_72:V=\:( VQ,1T4V;Q3>D[VN?(1_8MO@LQT90Y3%,.JMGP9S_H?> ';0;5
MA(B89LHI/1,-(DM,-.6DI@EU6&&JJ:94313-"E---:5J8DQT?C.I:J).QUQ3
M97<-.7L<8.V[$!&33C6E=.(.QZ1332F=&!.33I5%.O^;UH>>#S$Q^U0Y[)-,
M[76(B1FHRF&@5&J/.QTS4#6E@:)HUIB!ZDD-%&%B!JIS&"B)24-,S$!U#@,E
M,1<A)KK&EL- 2<QEB(E9J,YAH>2P([HW,0O5.2R4Q(SN3<Q"=0X+I49'\?(O
M9J$ZAX62F%&G8Q:J<U@H'L2%VR$F9J$ZAX62 [DPFA2S$,UAH21F^ A1S$(T
MAX62F&%ZIYB%: X+)3'#]$XQ"]$<%DIB7H28Z+N>2>="ER$F9B&:PT))S*L0
M$[,0S3(72DW9HH2$68AF68G[>9V0G-V"D80,%PPI9B&:PT*)F>4Y>0@Q,0O1
M'!9*8J[#]Z68A18Y+)3$_!QB8A9:Y+!0$O,VQ,0LM/ 6FAV_X&CY#J:I[1V<
MPD)YPV1S;\CP,[Y"HHMA07?72WD#95_59\W:XP<AQX]9/OP#4$L#!!0    (
M $2( U.*,79?SP$  #,?   :    >&PO7W)E;',O=V]R:V)O;VLN>&UL+G)E
M;'/-V<MJPD 8AN%;D5R XW^(/:!===-M\0:"'0]X2,A,J=Y]11?V"UUT4^9;
MA4G(GQ<"#V$R>X_[)F_;8]ILNS0Z'?;'-*\V.7?/(:3E)AZ:-&Z[>+Q<6;7]
MH<F79;\.7;/<->L8=#*9AO[GC.IE]G/F:''NXE\FMJO5=AE?V^7G(1[S+X/#
M5]OOTB;&7(T63;^.>5Z%T_Y^.H7K0<:7R=7H[6->]6\?4H7200I!6C[((,C*
M!SD$>?F@&H+J\D%3")J6#WJ H(?R08\0]%@^Z F"GLH'R01EG! D#; FT%J0
M:R'P6A!L(1!;D&PA,%L0;2%06Y!M(7!;$&XAD%N0;B&P6Q!O(=!;46\ET%M1
M;R706P<?VP1Z*^JM!'HKZJT$>BOJK01Z*^JM!'HKZJT$>BOJK01Z*^JM!'H;
MZFT$>AOJ;01Z&^IM!'K;8+.$0&]#O8U ;T.]C4!O0[V-0&]#O8U ;T.]C4!O
M0[V-0&]'O9U ;T>]G4!O1[V=0&]'O9U ;Q]L=A/H[:BW$^CMJ+<3Z.VHMQ/H
M[:BW$^CMJ+<3Z%VCWC6!WC7J71/H7:/>]7_JG?)Y'].]Y[;&Y_\GU?ER;[P_
M_KJ\G1R\ERO. ?Z1OWP#4$L#!!0    ( $2( U,RX8'AQP$  !(?   3
M6T-O;G1E;G1?5'EP97-=+GAM;,W9R6[",!0%T%]!V5;$>( . C9MMRV+_H";
M/" BB2W;4/C[.F&06M&HB$J]FT2)[7=?;.EL,G[;6?*];576?I(L0[ /C/EL
M297VJ;%4QY&Y<94.\=$MF-792B^(B<%@Q#)3!ZI#/S0UDNGXB>9Z78;>\S:^
M]H6I)XFCTB>]Q_W$)FN2:&O+(M,ACK--G7]+Z1\2TKBRG>.7A?4W<4+"SB8T
M(S\''-:];LBY(J?>3+OPHJLXBVU+YL.N))]VESC3HYG/BXQRDZVKN"3UUI'.
M_9(H5&6Z+WK3G1SB#M/^RJ_.;\MT!<:9,V>LCR?FZ/*XXY$TJ_LV%B(7BNY/
M/"7&TE=_'S6GG5/^R^RXO1_&K=KS\*R]7;_'7\_X5/_"/@1('Q*D#P72QQ"D
MCQ%('[<@?=R!]'$/T@<?H#2"(BI'(96CF,I14.4HJG(45CF*JQP%5HXBJT"1
M5:#(*E!D%2BR"A19!8JL D56@2*K0)%5H,@J4625*+)*%%DEBJP215:)(JM$
MD56BR"I19)4HLBH4616*K I%5H4BJT*15:'(JE!D52BR*A19%8JL0Q19ARBR
M#O]3UG=C5G_]E[:YIY4NZF,^:W^%3S\!4$L! A0#%     @ 1(@#4P=!36*!
M    L0   !               ( !     &1O8U!R;W!S+V%P<"YX;6Q02P$"
M% ,4    " !$B -3OM>..>X    K @  $0              @ &O    9&]C
M4')O<',O8V]R92YX;6Q02P$"% ,4    " !$B -3F5R<(Q &  "<)P  $P
M            @ ', 0  >&PO=&AE;64O=&AE;64Q+GAM;%!+ 0(4 Q0    (
M $2( U.@W)S1.04  (H5   8              " @0T(  !X;"]W;W)K<VAE
M971S+W-H965T,2YX;6Q02P$"% ,4    " !$B -35K[:H 8'   1'@  &
M            @(%\#0  >&PO=V]R:W-H965T<R]S:&5E=#(N>&UL4$L! A0#
M%     @ 1(@#4[.Z=GO< @  6@D  !@              ("!N!0  'AL+W=O
M<FMS:&5E=',O<VAE970S+GAM;%!+ 0(4 Q0    ( $2( U-%_< RK 4  '<7
M   8              " @<H7  !X;"]W;W)K<VAE971S+W-H965T-"YX;6Q0
M2P$"% ,4    " !$B -33Q@N<6,-  !V9   &               @(&L'0
M>&PO=V]R:W-H965T<R]S:&5E=#4N>&UL4$L! A0#%     @ 1(@#4VCG@@7F
M!@  Y1L  !@              ("!12L  'AL+W=O<FMS:&5E=',O<VAE970V
M+GAM;%!+ 0(4 Q0    ( $2( U.8)<[YV@,  (8(   8              "
M@6$R  !X;"]W;W)K<VAE971S+W-H965T-RYX;6Q02P$"% ,4    " !$B -3
M]FQW%UT"   S!0  &               @(%Q-@  >&PO=V]R:W-H965T<R]S
M:&5E=#@N>&UL4$L! A0#%     @ 1(@#4V0528):!   4PH  !@
M     ("!!#D  'AL+W=O<FMS:&5E=',O<VAE970Y+GAM;%!+ 0(4 Q0    (
M $2( U,D8%*7QP4  %X-   9              " @90]  !X;"]W;W)K<VAE
M971S+W-H965T,3 N>&UL4$L! A0#%     @ 1(@#4U T'_+W!   #PL  !D
M             ("!DD,  'AL+W=O<FMS:&5E=',O<VAE970Q,2YX;6Q02P$"
M% ,4    " !$B -3NJQ]_5X$  #K"0  &0              @(' 2   >&PO
M=V]R:W-H965T<R]S:&5E=#$R+GAM;%!+ 0(4 Q0    ( $2( U/VV'!V700
M "0*   9              " @55-  !X;"]W;W)K<VAE971S+W-H965T,3,N
M>&UL4$L! A0#%     @ 1(@#4_1G0E'I @  !P8  !D              ("!
MZ5$  'AL+W=O<FMS:&5E=',O<VAE970Q-"YX;6Q02P$"% ,4    " !$B -3
M)01:.Q(&   %$   &0              @($)50  >&PO=V]R:W-H965T<R]S
M:&5E=#$U+GAM;%!+ 0(4 Q0    ( $2( U,Q$Y?1@@,  -H(   9
M      " @5);  !X;"]W;W)K<VAE971S+W-H965T,38N>&UL4$L! A0#%
M  @ 1(@#4X>#U6_0 @  6@8  !D              ("!"U\  'AL+W=O<FMS
M:&5E=',O<VAE970Q-RYX;6Q02P$"% ,4    " !$B -3**2.W)8%  #7#
M&0              @($28@  >&PO=V]R:W-H965T<R]S:&5E=#$X+GAM;%!+
M 0(4 Q0    ( $2( U,D2_I[)P,  *T&   9              " @=]G  !X
M;"]W;W)K<VAE971S+W-H965T,3DN>&UL4$L! A0#%     @ 1(@#4Z?UV[-
M P  1@<  !D              ("!/6L  'AL+W=O<FMS:&5E=',O<VAE970R
M,"YX;6Q02P$"% ,4    " !$B -3'VY,PWL$  !X"@  &0
M@(&T;@  >&PO=V]R:W-H965T<R]S:&5E=#(Q+GAM;%!+ 0(4 Q0    ( $2(
M U.2D'?IX (  "\&   9              " @69S  !X;"]W;W)K<VAE971S
M+W-H965T,C(N>&UL4$L! A0#%     @ 1(@#4SJ6[].O P  RP@  !D
M         ("!?78  'AL+W=O<FMS:&5E=',O<VAE970R,RYX;6Q02P$"% ,4
M    " !$B -3^M-$WF<"   4!0  &0              @(%C>@  >&PO=V]R
M:W-H965T<R]S:&5E=#(T+GAM;%!+ 0(4 Q0    ( $2( U.JZJ;]O00  '8.
M   9              " @0%]  !X;"]W;W)K<VAE971S+W-H965T,C4N>&UL
M4$L! A0#%     @ 1(@#4\)?:]@= P  B@<  !D              ("!]8$
M 'AL+W=O<FMS:&5E=',O<VAE970R-BYX;6Q02P$"% ,4    " !$B -3+T'_
MJFX$  #W"P  &0              @(%)A0  >&PO=V]R:W-H965T<R]S:&5E
M=#(W+GAM;%!+ 0(4 Q0    ( $2( U,3T&=^L@,  -D,   9
M  " @>Z)  !X;"]W;W)K<VAE971S+W-H965T,C@N>&UL4$L! A0#%     @
M1(@#4QQW&>V+!   %A,  !D              ("!UXT  'AL+W=O<FMS:&5E
M=',O<VAE970R.2YX;6Q02P$"% ,4    " !$B -3EDPP+EX$  !F$   &0
M            @(&9D@  >&PO=V]R:W-H965T<R]S:&5E=#,P+GAM;%!+ 0(4
M Q0    ( $2( U,!)U;JD ,  ($-   9              " @2Z7  !X;"]W
M;W)K<VAE971S+W-H965T,S$N>&UL4$L! A0#%     @ 1(@#4QA.8;]^ @
MQ04  !D              ("!]9H  'AL+W=O<FMS:&5E=',O<VAE970S,BYX
M;6Q02P$"% ,4    " !$B -3&\%M@[H%  #Q'0  &0              @(&J
MG0  >&PO=V]R:W-H965T<R]S:&5E=#,S+GAM;%!+ 0(4 Q0    ( $2( U/5
MY<B:CP(  /4&   9              " @9NC  !X;"]W;W)K<VAE971S+W-H
M965T,S0N>&UL4$L! A0#%     @ 1(@#4Y4Z5=;; @  %0@  !D
M     ("!8:8  'AL+W=O<FMS:&5E=',O<VAE970S-2YX;6Q02P$"% ,4
M" !$B -3^RB4U?L#  #7$@  &0              @(%SJ0  >&PO=V]R:W-H
M965T<R]S:&5E=#,V+GAM;%!+ 0(4 Q0    ( $2( U,!6@LN1@4  )0:   9
M              " @:6M  !X;"]W;W)K<VAE971S+W-H965T,S<N>&UL4$L!
M A0#%     @ 1(@#4_A+CJD] @  TP0  !D              ("!(K,  'AL
M+W=O<FMS:&5E=',O<VAE970S."YX;6Q02P$"% ,4    " !$B -3?PGJL#D"
M  !;!0  &0              @(&6M0  >&PO=V]R:W-H965T<R]S:&5E=#,Y
M+GAM;%!+ 0(4 Q0    ( $2( U.G3K$U?04  &4;   9              "
M@0:X  !X;"]W;W)K<VAE971S+W-H965T-# N>&UL4$L! A0#%     @ 1(@#
M4SO>S4H= P  :@L  !D              ("!NKT  'AL+W=O<FMS:&5E=',O
M<VAE970T,2YX;6Q02P$"% ,4    " !$B -3W7F?3?X"  #6"0  &0
M        @($.P0  >&PO=V]R:W-H965T<R]S:&5E=#0R+GAM;%!+ 0(4 Q0
M   ( $2( U-$ZL\7 0,  %\*   9              " @4/$  !X;"]W;W)K
M<VAE971S+W-H965T-#,N>&UL4$L! A0#%     @ 1(@#4V >C"H7 P  EPL
M !D              ("!>\<  'AL+W=O<FMS:&5E=',O<VAE970T-"YX;6Q0
M2P$"% ,4    " !$B -3D>%9,ZT"  "6!P  &0              @(')R@
M>&PO=V]R:W-H965T<R]S:&5E=#0U+GAM;%!+ 0(4 Q0    ( $2( U.7B3K'
M @,  ,()   9              " @:W-  !X;"]W;W)K<VAE971S+W-H965T
M-#8N>&UL4$L! A0#%     @ 1(@#4WC%%6,^!   \Q   !D
M ("!YM   'AL+W=O<FMS:&5E=',O<VAE970T-RYX;6Q02P$"% ,4    " !$
MB -3E"YE0%$#  #$"@  &0              @(%;U0  >&PO=V]R:W-H965T
M<R]S:&5E=#0X+GAM;%!+ 0(4 Q0    ( $2( U,\>NIQ20,  +P+   9
M          " @>/8  !X;"]W;W)K<VAE971S+W-H965T-#DN>&UL4$L! A0#
M%     @ 1(@#4Y4B%"!# P  Z@L  !D              ("!8]P  'AL+W=O
M<FMS:&5E=',O<VAE970U,"YX;6Q02P$"% ,4    " !$B -3\7KPR+8"  ")
M"   &0              @('=WP  >&PO=V]R:W-H965T<R]S:&5E=#4Q+GAM
M;%!+ 0(4 Q0    ( $2( U,[_Q) DP,  )X,   9              " @<KB
M  !X;"]W;W)K<VAE971S+W-H965T-3(N>&UL4$L! A0#%     @ 1(@#4P:Q
M(QL[ P  :A,   T              ( !E.8  'AL+W-T>6QE<RYX;6Q02P$"
M% ,4    " !$B -3EXJ[',     3 @  "P              @ 'ZZ0  7W)E
M;',O+G)E;'-02P$"% ,4    " !$B -32CY.*R0$  !0(P  #P
M    @ 'CZ@  >&PO=V]R:V)O;VLN>&UL4$L! A0#%     @ 1(@#4XHQ=E_/
M 0  ,Q\  !H              ( !-.\  'AL+U]R96QS+W=O<FMB;V]K+GAM
M;"YR96QS4$L! A0#%     @ 1(@#4S+A@>'' 0  $A\  !,
M ( !._$  %M#;VYT96YT7U1Y<&5S72YX;6Q02P4&     #P / !;$   ,_,
#

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>64
<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>65
<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>66
<FILENAME>FilingSummary.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version='1.0' encoding='utf-8'?>
<FilingSummary>
  <Version>3.21.2</Version>
  <ProcessingTime/>
  <ReportFormat>html</ReportFormat>
  <ContextCount>180</ContextCount>
  <ElementCount>325</ElementCount>
  <EntityCount>1</EntityCount>
  <FootnotesReported>false</FootnotesReported>
  <SegmentCount>43</SegmentCount>
  <ScenarioCount>0</ScenarioCount>
  <TuplesReported>false</TuplesReported>
  <UnitCount>7</UnitCount>
  <MyReports>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R1.htm</HtmlFileName>
      <LongName>000 - Document - Document And Entity Information</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-document-and-entity-information</Role>
      <ShortName>Document And Entity Information</ShortName>
      <MenuCategory>Cover</MenuCategory>
      <Position>1</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R2.htm</HtmlFileName>
      <LongName>001 - Statement - Consolidated Balance Sheets (Current Period Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited</Role>
      <ShortName>Consolidated Balance Sheets (Current Period Unaudited)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>2</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R3.htm</HtmlFileName>
      <LongName>002 - Statement - Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals</Role>
      <ShortName>Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>3</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R4.htm</HtmlFileName>
      <LongName>003 - Statement - Consolidated Statements of Comprehensive Income (Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited</Role>
      <ShortName>Consolidated Statements of Comprehensive Income (Unaudited)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>4</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R5.htm</HtmlFileName>
      <LongName>004 - Statement - Consolidated Statements of Shareholders' Equity (Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited</Role>
      <ShortName>Consolidated Statements of Shareholders' Equity (Unaudited)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>5</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R6.htm</HtmlFileName>
      <LongName>005 - Statement - Consolidated Statements of Cash Flows (Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited</Role>
      <ShortName>Consolidated Statements of Cash Flows (Unaudited)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>6</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R7.htm</HtmlFileName>
      <LongName>006 - Disclosure - Note 1 - Basis of Presentation</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-1-basis-of-presentation</Role>
      <ShortName>Note 1 - Basis of Presentation</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>7</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R8.htm</HtmlFileName>
      <LongName>007 - Disclosure - Note 2 - Recent Accounting Pronouncements</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-2-recent-accounting-pronouncements</Role>
      <ShortName>Note 2 - Recent Accounting Pronouncements</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>8</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R9.htm</HtmlFileName>
      <LongName>008 - Disclosure - Note 3 - Net Income Per Common Share</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share</Role>
      <ShortName>Note 3 - Net Income Per Common Share</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>9</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R10.htm</HtmlFileName>
      <LongName>009 - Disclosure - Note 4 - Business Combinations</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-4-business-combinations</Role>
      <ShortName>Note 4 - Business Combinations</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>10</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R11.htm</HtmlFileName>
      <LongName>010 - Disclosure - Note 5 - Goodwill and Other Intangible Assets</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets</Role>
      <ShortName>Note 5 - Goodwill and Other Intangible Assets</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>11</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R12.htm</HtmlFileName>
      <LongName>011 - Disclosure - Note 6 - Fair Value Measurements</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements</Role>
      <ShortName>Note 6 - Fair Value Measurements</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>12</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R13.htm</HtmlFileName>
      <LongName>012 - Disclosure - Note 7 - Marketable Securities</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities</Role>
      <ShortName>Note 7 - Marketable Securities</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>13</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R14.htm</HtmlFileName>
      <LongName>013 - Disclosure - Note 8 - Inventory</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-8-inventory</Role>
      <ShortName>Note 8 - Inventory</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>14</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R15.htm</HtmlFileName>
      <LongName>014 - Disclosure - Note 9 - Stock-based Compensation</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation</Role>
      <ShortName>Note 9 - Stock-based Compensation</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>15</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R16.htm</HtmlFileName>
      <LongName>015 - Disclosure - Note 10 - Accumulated Other Comprehensive Income (Loss)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss</Role>
      <ShortName>Note 10 - Accumulated Other Comprehensive Income (Loss)</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>16</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R17.htm</HtmlFileName>
      <LongName>016 - Disclosure - Note 11 - Income Taxes</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-11-income-taxes</Role>
      <ShortName>Note 11 - Income Taxes</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>17</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R18.htm</HtmlFileName>
      <LongName>017 - Disclosure - Note 12 - Segment Reporting</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting</Role>
      <ShortName>Note 12 - Segment Reporting</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>18</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R19.htm</HtmlFileName>
      <LongName>018 - Disclosure - Note 3 - Net Income Per Common Share (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-tables</Role>
      <ShortName>Note 3 - Net Income Per Common Share (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share</ParentRole>
      <Position>19</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R20.htm</HtmlFileName>
      <LongName>019 - Disclosure - Note 4 - Business Combinations (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables</Role>
      <ShortName>Note 4 - Business Combinations (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-4-business-combinations</ParentRole>
      <Position>20</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R21.htm</HtmlFileName>
      <LongName>020 - Disclosure - Note 5 - Goodwill and Other Intangible Assets (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables</Role>
      <ShortName>Note 5 - Goodwill and Other Intangible Assets (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets</ParentRole>
      <Position>21</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R22.htm</HtmlFileName>
      <LongName>021 - Disclosure - Note 6 - Fair Value Measurements (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-tables</Role>
      <ShortName>Note 6 - Fair Value Measurements (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements</ParentRole>
      <Position>22</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R23.htm</HtmlFileName>
      <LongName>022 - Disclosure - Note 7 - Marketable Securities (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-tables</Role>
      <ShortName>Note 7 - Marketable Securities (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities</ParentRole>
      <Position>23</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R24.htm</HtmlFileName>
      <LongName>023 - Disclosure - Note 8 - Inventory (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-8-inventory-tables</Role>
      <ShortName>Note 8 - Inventory (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-8-inventory</ParentRole>
      <Position>24</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R25.htm</HtmlFileName>
      <LongName>024 - Disclosure - Note 9 - Stock-based Compensation (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables</Role>
      <ShortName>Note 9 - Stock-based Compensation (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation</ParentRole>
      <Position>25</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R26.htm</HtmlFileName>
      <LongName>025 - Disclosure - Note 10 - Accumulated Other Comprehensive Income (Loss) (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-tables</Role>
      <ShortName>Note 10 - Accumulated Other Comprehensive Income (Loss) (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss</ParentRole>
      <Position>26</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R27.htm</HtmlFileName>
      <LongName>026 - Disclosure - Note 12 - Segment Reporting (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables</Role>
      <ShortName>Note 12 - Segment Reporting (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting</ParentRole>
      <Position>27</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R28.htm</HtmlFileName>
      <LongName>027 - Disclosure - Note 3 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details</Role>
      <ShortName>Note 3 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>28</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R29.htm</HtmlFileName>
      <LongName>028 - Disclosure - Note 4 - Business Combinations (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual</Role>
      <ShortName>Note 4 - Business Combinations (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables</ParentRole>
      <Position>29</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R30.htm</HtmlFileName>
      <LongName>029 - Disclosure - Note 4 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details</Role>
      <ShortName>Note 4 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>30</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R31.htm</HtmlFileName>
      <LongName>030 - Disclosure - Note 5 - Goodwill and Other Intangible Assets (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual</Role>
      <ShortName>Note 5 - Goodwill and Other Intangible Assets (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables</ParentRole>
      <Position>31</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R32.htm</HtmlFileName>
      <LongName>031 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Changes in the Carrying Amount of Goodwill (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details</Role>
      <ShortName>Note 5 - Goodwill and Other Intangible Assets - Changes in the Carrying Amount of Goodwill (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>32</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R33.htm</HtmlFileName>
      <LongName>032 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details</Role>
      <ShortName>Note 5 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>33</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R34.htm</HtmlFileName>
      <LongName>033 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details</Role>
      <ShortName>Note 5 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>34</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R35.htm</HtmlFileName>
      <LongName>034 - Disclosure - Note 6 - Fair Value Measurements (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual</Role>
      <ShortName>Note 6 - Fair Value Measurements (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-tables</ParentRole>
      <Position>35</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R36.htm</HtmlFileName>
      <LongName>035 - Disclosure - Note 6 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details</Role>
      <ShortName>Note 6 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>36</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R37.htm</HtmlFileName>
      <LongName>036 - Disclosure - Note 7 - Marketable Securities - Short-term and Long-term Available for Sale Securities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details</Role>
      <ShortName>Note 7 - Marketable Securities - Short-term and Long-term Available for Sale Securities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>37</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R38.htm</HtmlFileName>
      <LongName>037 - Disclosure - Note 7 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details</Role>
      <ShortName>Note 7 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>38</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R39.htm</HtmlFileName>
      <LongName>038 - Disclosure - Note 8 - Inventory - Inventory (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details</Role>
      <ShortName>Note 8 - Inventory - Inventory (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>39</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R40.htm</HtmlFileName>
      <LongName>039 - Disclosure - Note 9 - Stock-based Compensation (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual</Role>
      <ShortName>Note 9 - Stock-based Compensation (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables</ParentRole>
      <Position>40</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R41.htm</HtmlFileName>
      <LongName>040 - Disclosure - Note 9 - Stock-based Compensation - Stock Option Activity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details</Role>
      <ShortName>Note 9 - Stock-based Compensation - Stock Option Activity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>41</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R42.htm</HtmlFileName>
      <LongName>041 - Disclosure - Note 9 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details</Role>
      <ShortName>Note 9 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>42</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R43.htm</HtmlFileName>
      <LongName>042 - Disclosure - Note 9 - Stock-based Compensation - Restricted Stock Options (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details</Role>
      <ShortName>Note 9 - Stock-based Compensation - Restricted Stock Options (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>43</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R44.htm</HtmlFileName>
      <LongName>043 - Disclosure - Note 9 - Stock-based Compensation - Performance Stock (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details</Role>
      <ShortName>Note 9 - Stock-based Compensation - Performance Stock (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>44</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R45.htm</HtmlFileName>
      <LongName>044 - Disclosure - Note 9 - Stock-based Compensation - Assumptions Used in the Valuation of Performance Stock (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details</Role>
      <ShortName>Note 9 - Stock-based Compensation - Assumptions Used in the Valuation of Performance Stock (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>45</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R46.htm</HtmlFileName>
      <LongName>045 - Disclosure - Note 9 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details</Role>
      <ShortName>Note 9 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>46</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R47.htm</HtmlFileName>
      <LongName>046 - Disclosure - Note 10 - Accumulated Other Comprehensive Income (Loss) - Other Comprehensive Loss (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details</Role>
      <ShortName>Note 10 - Accumulated Other Comprehensive Income (Loss) - Other Comprehensive Loss (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-tables</ParentRole>
      <Position>47</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R48.htm</HtmlFileName>
      <LongName>047 - Disclosure - Note 11 - Income Taxes (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual</Role>
      <ShortName>Note 11 - Income Taxes (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://www.protolabs.com/20210630/role/statement-note-11-income-taxes</ParentRole>
      <Position>48</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R49.htm</HtmlFileName>
      <LongName>048 - Disclosure - Note 12 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details</Role>
      <ShortName>Note 12 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>49</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R50.htm</HtmlFileName>
      <LongName>049 - Disclosure - Note 12 - Segment Reporting - Income From Operations (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details</Role>
      <ShortName>Note 12 - Segment Reporting - Income From Operations (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>50</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R51.htm</HtmlFileName>
      <LongName>050 - Disclosure - Note 12 - Segment Reporting - Long-lived Assets by Geographic Region (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details</Role>
      <ShortName>Note 12 - Segment Reporting - Long-lived Assets by Geographic Region (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>51</Position>
    </Report>
    <Report instance="prlb20210630_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R52.htm</HtmlFileName>
      <LongName>051 - Disclosure - Note 12 - Segment Reporting - Disaggregation of Revenue (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details</Role>
      <ShortName>Note 12 - Segment Reporting - Disaggregation of Revenue (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>52</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="10-Q" original="prlb20210630_10q.htm">prlb20210630_10q.htm</File>
    <File>ex_252264.htm</File>
    <File>ex_252265.htm</File>
    <File>ex_252266.htm</File>
    <File>prlb-20210630.xsd</File>
    <File>prlb-20210630_cal.xml</File>
    <File>prlb-20210630_def.xml</File>
    <File>prlb-20210630_lab.xml</File>
    <File>prlb-20210630_pre.xml</File>
  </InputFiles>
  <SupplementalFiles/>
  <BaseTaxonomies>
    <BaseTaxonomy>http://fasb.org/us-gaap/2021-01-31</BaseTaxonomy>
    <BaseTaxonomy>http://xbrl.sec.gov/dei/2021</BaseTaxonomy>
    <BaseTaxonomy>http://fasb.org/srt/2021-01-31</BaseTaxonomy>
    <BaseTaxonomy>http://xbrl.sec.gov/country/2021</BaseTaxonomy>
  </BaseTaxonomies>
  <HasPresentationLinkbase>true</HasPresentationLinkbase>
  <HasCalculationLinkbase>true</HasCalculationLinkbase>
</FilingSummary>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>JSON
<SEQUENCE>69
<FILENAME>MetaLinks.json
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
{
 "instance": {
  "prlb20210630_10q.htm": {
   "axisCustom": 0,
   "axisStandard": 16,
   "contextCount": 180,
   "dts": {
    "calculationLink": {
     "local": [
      "prlb-20210630_cal.xml"
     ]
    },
    "definitionLink": {
     "local": [
      "prlb-20210630_def.xml"
     ]
    },
    "inline": {
     "local": [
      "prlb20210630_10q.htm"
     ]
    },
    "labelLink": {
     "local": [
      "prlb-20210630_lab.xml"
     ],
     "remote": [
      "https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-doc-2021-01-31.xml"
     ]
    },
    "presentationLink": {
     "local": [
      "prlb-20210630_pre.xml"
     ]
    },
    "referenceLink": {
     "remote": [
      "https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-ref-2021-01-31.xml"
     ]
    },
    "schema": {
     "local": [
      "prlb-20210630.xsd"
     ],
     "remote": [
      "https://xbrl.sec.gov/country/2021/country-2021.xsd",
      "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",
      "https://www.xbrl.org/dtr/type/2020-01-21/types.xsd",
      "https://xbrl.sec.gov/naics/2021/naics-2021.xsd",
      "https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd",
      "https://www.xbrl.org/2020/extensible-enumerations-2.0.xsd",
      "http://www.xbrl.org/2005/xbrldt-2005.xsd",
      "http://www.xbrl.org/2006/ref-2006-02-27.xsd",
      "https://xbrl.fasb.org/us-gaap/2021/elts/us-types-2021-01-31.xsd",
      "https://xbrl.fasb.org/srt/2021/elts/srt-types-2021-01-31.xsd",
      "https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd",
      "https://xbrl.fasb.org/srt/2021/elts/srt-roles-2021-01-31.xsd",
      "https://xbrl.fasb.org/us-gaap/2021/elts/us-roles-2021-01-31.xsd",
      "https://xbrl.sec.gov/dei/2021/dei-2021.xsd",
      "https://xbrl.sec.gov/stpr/2021/stpr-2021.xsd",
      "https://xbrl.sec.gov/sic/2021/sic-2021.xsd",
      "https://xbrl.sec.gov/exch/2021/exch-2021.xsd",
      "https://xbrl.sec.gov/currency/2021/currency-2021.xsd",
      "http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/net-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/reference-2009-12-16.xsd",
      "https://xbrl.fasb.org/us-gaap/2021/elts/us-parts-codification-2021-01-31.xsd",
      "https://xbrl.sec.gov/dei/2021/dei-2021_doc.xsd",
      "https://xbrl.sec.gov/dei/2021/dei-2021_ref.xsd"
     ]
    }
   },
   "elementCount": 392,
   "entityCount": 1,
   "hidden": {
    "http://fasb.org/us-gaap/2021-01-31": 27,
    "http://www.protolabs.com/20210630": 2,
    "http://xbrl.sec.gov/dei/2021": 6,
    "total": 35
   },
   "keyCustom": 15,
   "keyStandard": 310,
   "memberCustom": 13,
   "memberStandard": 30,
   "nsprefix": "prlb",
   "nsuri": "http://www.protolabs.com/20210630",
   "report": {
    "R1": {
     "firstAnchor": {
      "ancestors": [
       "b",
       "p",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:DocumentType",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "document",
     "isDefault": "true",
     "longName": "000 - Document - Document And Entity Information",
     "role": "http://www.protolabs.com/20210630/role/statement-document-and-entity-information",
     "shortName": "Document And Entity Information",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "b",
       "p",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:DocumentType",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R10": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "009 - Disclosure - Note 4 - Business Combinations",
     "role": "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
     "shortName": "Note 4 - Business Combinations",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R11": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "010 - Disclosure - Note 5 - Goodwill and Other Intangible Assets",
     "role": "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets",
     "shortName": "Note 5 - Goodwill and Other Intangible Assets",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R12": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueDisclosuresTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "011 - Disclosure - Note 6 - Fair Value Measurements",
     "role": "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
     "shortName": "Note 6 - Fair Value Measurements",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueDisclosuresTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R13": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InvestmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "012 - Disclosure - Note 7 - Marketable Securities",
     "role": "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities",
     "shortName": "Note 7 - Marketable Securities",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InvestmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R14": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "013 - Disclosure - Note 8 - Inventory",
     "role": "http://www.protolabs.com/20210630/role/statement-note-8-inventory",
     "shortName": "Note 8 - Inventory",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R15": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "014 - Disclosure - Note 9 - Stock-based Compensation",
     "role": "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
     "shortName": "Note 9 - Stock-based Compensation",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R16": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfReclassificationAmountTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "015 - Disclosure - Note 10 - Accumulated Other Comprehensive Income (Loss)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss",
     "shortName": "Note 10 - Accumulated Other Comprehensive Income (Loss)",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfReclassificationAmountTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R17": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "016 - Disclosure - Note 11 - Income Taxes",
     "role": "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes",
     "shortName": "Note 11 - Income Taxes",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R18": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "017 - Disclosure - Note 12 - Segment Reporting",
     "role": "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting",
     "shortName": "Note 12 - Segment Reporting",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R19": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "018 - Disclosure - Note 3 - Net Income Per Common Share (Tables)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-tables",
     "shortName": "Note 3 - Net Income Per Common Share (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R2": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "001 - Statement - Consolidated Balance Sheets (Current Period Unaudited)",
     "role": "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited",
     "shortName": "Consolidated Balance Sheets (Current Period Unaudited)",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R20": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "019 - Disclosure - Note 4 - Business Combinations (Tables)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables",
     "shortName": "Note 4 - Business Combinations (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30_BusinessAcquisitionAxis-Acquired3dHubsMember",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R21": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfGoodwillTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "020 - Disclosure - Note 5 - Goodwill and Other Intangible Assets (Tables)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables",
     "shortName": "Note 5 - Goodwill and Other Intangible Assets (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfGoodwillTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R22": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:FairValueDisclosuresTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "021 - Disclosure - Note 6 - Fair Value Measurements (Tables)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-tables",
     "shortName": "Note 6 - Fair Value Measurements (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:FairValueDisclosuresTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R23": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "022 - Disclosure - Note 7 - Marketable Securities (Tables)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-tables",
     "shortName": "Note 7 - Marketable Securities (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R24": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "023 - Disclosure - Note 8 - Inventory (Tables)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-8-inventory-tables",
     "shortName": "Note 8 - Inventory (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R25": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "024 - Disclosure - Note 9 - Stock-based Compensation (Tables)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables",
     "shortName": "Note 9 - Stock-based Compensation (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R26": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:DisclosureOfReclassificationAmountTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "025 - Disclosure - Note 10 - Accumulated Other Comprehensive Income (Loss) (Tables)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-tables",
     "shortName": "Note 10 - Accumulated Other Comprehensive Income (Loss) (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:DisclosureOfReclassificationAmountTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R27": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "prlb:IncomeFromOperationsByGeographicAreaTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "026 - Disclosure - Note 12 - Segment Reporting (Tables)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables",
     "shortName": "Note 12 - Segment Reporting (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "prlb:IncomeFromOperationsByGeographicAreaTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R28": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:NetIncomeLoss",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "027 - Disclosure - Note 3 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
     "shortName": "Note 3 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30",
      "decimals": "INF",
      "lang": null,
      "name": "us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     }
    },
    "R29": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "028 - Disclosure - Note 4 - Business Combinations (Details Textual)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
     "shortName": "Note 4 - Business Combinations (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember",
      "decimals": "-5",
      "lang": null,
      "name": "us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R3": {
     "firstAnchor": null,
     "groupType": "statement",
     "isDefault": "false",
     "longName": "002 - Statement - Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals)",
     "role": "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals",
     "shortName": "Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": null
    },
    "R30": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "029 - Disclosure - Note 4 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
     "shortName": "Note 4 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R31": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfGoodwillTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:GoodwillAcquiredDuringPeriod",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "030 - Disclosure - Note 5 - Goodwill and Other Intangible Assets (Details Textual)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual",
     "shortName": "Note 5 - Goodwill and Other Intangible Assets (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2020-01-01_2020-12-31",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R32": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "031 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Changes in the Carrying Amount of Goodwill (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details",
     "shortName": "Note 5 - Goodwill and Other Intangible Assets - Changes in the Carrying Amount of Goodwill (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfGoodwillTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:GoodwillForeignCurrencyTranslationGainLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R33": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "032 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
     "shortName": "Note 5 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R34": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-4",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "033 - Disclosure - Note 5 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
     "shortName": "Note 5 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "us-gaap:GoodwillAndIntangibleAssetsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-4",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R35": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-22_2021-01-22_BusinessAcquisitionAxis-Acquired3dHubsMember",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:PaymentsToAcquireBusinessesGross",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "034 - Disclosure - Note 6 - Fair Value Measurements (Details Textual)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual",
     "shortName": "Note 6 - Fair Value Measurements (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": null
    },
    "R36": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock",
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AvailableForSaleSecuritiesDebtSecurities",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "035 - Disclosure - Note 6 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
     "shortName": "Note 6 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:FairValueAssetsMeasuredOnRecurringBasisTextBlock",
       "us-gaap:FairValueDisclosuresTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30_FairValueByFairValueHierarchyLevelAxis-FairValueInputsLevel1Member_FairValueByMeasurementFrequencyAxis-FairValueMeasurementsRecurringMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:CashAndCashEquivalentsFairValueDisclosure",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R37": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock",
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "036 - Disclosure - Note 7 - Marketable Securities - Short-term and Long-term Available for Sale Securities (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details",
     "shortName": "Note 7 - Marketable Securities - Short-term and Long-term Available for Sale Securities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:DebtSecuritiesAvailableForSaleTableTextBlock",
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R38": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock",
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "037 - Disclosure - Note 7 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
     "shortName": "Note 7 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock",
       "us-gaap:InvestmentTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R39": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:InventoryGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "038 - Disclosure - Note 8 - Inventory - Inventory (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details",
     "shortName": "Note 8 - Inventory - Inventory (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
       "us-gaap:InventoryDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:InventoryGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R4": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "003 - Statement - Consolidated Statements of Comprehensive Income (Unaudited)",
     "role": "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited",
     "shortName": "Consolidated Statements of Comprehensive Income (Unaudited)",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:CostOfGoodsAndServicesSold",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R40": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "039 - Disclosure - Note 9 - Stock-based Compensation (Details Textual)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual",
     "shortName": "Note 9 - Stock-based Compensation (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R41": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "040 - Disclosure - Note 9 - Stock-based Compensation - Stock Option Activity (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details",
     "shortName": "Note 9 - Stock-based Compensation - Stock Option Activity (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2020-12-31",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     }
    },
    "R42": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "041 - Disclosure - Note 9 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
     "shortName": "Note 9 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30_AwardTypeAxis-EmployeeStockOptionMember",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R43": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2020-12-31_AwardTypeAxis-RestrictedStockMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "042 - Disclosure - Note 9 - Stock-based Compensation - Restricted Stock Options (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details",
     "shortName": "Note 9 - Stock-based Compensation - Restricted Stock Options (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2020-12-31_AwardTypeAxis-RestrictedStockMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     }
    },
    "R44": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2020-12-31_AwardTypeAxis-PerformanceSharesMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "043 - Disclosure - Note 9 - Stock-based Compensation - Performance Stock (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details",
     "shortName": "Note 9 - Stock-based Compensation - Performance Stock (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2020-12-31_AwardTypeAxis-PerformanceSharesMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Share",
      "xsiNil": "false"
     }
    },
    "R45": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember",
      "decimals": "4",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Pure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "044 - Disclosure - Note 9 - Stock-based Compensation - Assumptions Used in the Valuation of Performance Stock (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
     "shortName": "Note 9 - Stock-based Compensation - Assumptions Used in the Valuation of Performance Stock (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30_AwardTypeAxis-PerformanceSharesMember",
      "decimals": "4",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Pure",
      "xsiNil": "false"
     }
    },
    "R46": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "045 - Disclosure - Note 9 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
     "shortName": "Note 9 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30_PlanNameAxis-EmployeeStockPurchasePlanMember",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R47": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-03-31",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:StockholdersEquity",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "046 - Disclosure - Note 10 - Accumulated Other Comprehensive Income (Loss) - Other Comprehensive Loss (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details",
     "shortName": "Note 10 - Accumulated Other Comprehensive Income (Loss) - Other Comprehensive Loss (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:ScheduleOfComprehensiveIncomeLossTableTextBlock",
       "us-gaap:DisclosureOfReclassificationAmountTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30_StatementEquityComponentsAxis-AccumulatedTranslationAdjustmentMember",
      "decimals": "-4",
      "lang": null,
      "name": "us-gaap:OciBeforeReclassificationsNetOfTaxAttributableToParent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R48": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:IncomeTaxExpenseBenefit",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "047 - Disclosure - Note 11 - Income Taxes (Details Textual)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual",
     "shortName": "Note 11 - Income Taxes (Details Textual)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30",
      "decimals": "3",
      "lang": null,
      "name": "us-gaap:EffectiveIncomeTaxRateContinuingOperations",
      "reportCount": 1,
      "unique": true,
      "unitRef": "Pure",
      "xsiNil": "false"
     }
    },
    "R49": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "048 - Disclosure - Note 12 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details",
     "shortName": "Note 12 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R5": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2019-12-31_StatementEquityComponentsAxis-CommonStockMember",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:CommonStockSharesOutstanding",
      "reportCount": 1,
      "unitRef": "Share",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "004 - Statement - Consolidated Statements of Shareholders' Equity (Unaudited)",
     "role": "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited",
     "shortName": "Consolidated Statements of Shareholders' Equity (Unaudited)",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2020-01-01_2020-03-31_StatementEquityComponentsAxis-CommonStockMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R50": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingIncomeLoss",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "049 - Disclosure - Note 12 - Segment Reporting - Income From Operations (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details",
     "shortName": "Note 12 - Segment Reporting - Income From Operations (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "prlb:IncomeFromOperationsByGeographicAreaTableTextBlock",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:OperatingIncomeLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R51": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:PropertyPlantAndEquipmentNet",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "050 - Disclosure - Note 12 - Segment Reporting - Long-lived Assets by Geographic Region (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details",
     "shortName": "Note 12 - Segment Reporting - Long-lived Assets by Geographic Region (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:LongLivedAssetsByGeographicAreasTableTextBlock",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "i_2021-06-30_ConsolidationItemsAxis-OperatingSegmentsMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:PropertyPlantAndEquipmentNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R52": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "051 - Disclosure - Note 12 - Segment Reporting - Disaggregation of Revenue (Details)",
     "role": "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details",
     "shortName": "Note 12 - Segment Reporting - Disaggregation of Revenue (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "us-gaap:DisaggregationOfRevenueTableTextBlock",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-04-01_2021-06-30_ProductOrServiceAxis-InjectionMoldingProtomoldMember",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerIncludingAssessedTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R6": {
     "firstAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:NetIncomeLoss",
      "reportCount": 1,
      "unitRef": "USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "005 - Statement - Consolidated Statements of Cash Flows (Unaudited)",
     "role": "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited",
     "shortName": "Consolidated Statements of Cash Flows (Unaudited)",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "td",
       "tr",
       "tbody",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:DepreciationDepletionAndAmortization",
      "reportCount": 1,
      "unique": true,
      "unitRef": "USD",
      "xsiNil": "false"
     }
    },
    "R7": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "006 - Disclosure - Note 1 - Basis of Presentation",
     "role": "http://www.protolabs.com/20210630/role/statement-note-1-basis-of-presentation",
     "shortName": "Note 1 - Basis of Presentation",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R8": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SignificantAccountingPoliciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "007 - Disclosure - Note 2 - Recent Accounting Pronouncements",
     "role": "http://www.protolabs.com/20210630/role/statement-note-2-recent-accounting-pronouncements",
     "shortName": "Note 2 - Recent Accounting Pronouncements",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SignificantAccountingPoliciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R9": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "008 - Disclosure - Note 3 - Net Income Per Common Share",
     "role": "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share",
     "shortName": "Note 3 - Net Income Per Common Share",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "prlb20210630_10q.htm",
      "contextRef": "d_2021-01-01_2021-06-30",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    }
   },
   "segmentCount": 43,
   "tag": {
    "country_US": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "UNITED STATES"
       }
      }
     },
     "localname": "US",
     "nsuri": "http://xbrl.sec.gov/country/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "dei_AmendmentFlag": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true when the XBRL content amends previously-filed or accepted submission.",
        "label": "Amendment Flag"
       }
      }
     },
     "localname": "AmendmentFlag",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_CityAreaCode": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Area code of city",
        "label": "City Area Code"
       }
      }
     },
     "localname": "CityAreaCode",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_CurrentFiscalYearEndDate": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "End date of current fiscal year in the format --MM-DD.",
        "label": "Current Fiscal Year End Date"
       }
      }
     },
     "localname": "CurrentFiscalYearEndDate",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "gMonthDayItemType"
    },
    "dei_DocumentFiscalPeriodFocus": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "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.",
        "label": "Document Fiscal Period Focus"
       }
      }
     },
     "localname": "DocumentFiscalPeriodFocus",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "fiscalPeriodItemType"
    },
    "dei_DocumentFiscalYearFocus": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "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.",
        "label": "Document Fiscal Year Focus"
       }
      }
     },
     "localname": "DocumentFiscalYearFocus",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "gYearItemType"
    },
    "dei_DocumentInformationLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Document Information [Line Items]"
       }
      }
     },
     "localname": "DocumentInformationLineItems",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "stringItemType"
    },
    "dei_DocumentInformationTable": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Container to support the formal attachment of each official or unofficial, public or private document as part of a submission package.",
        "label": "Document Information [Table]"
       }
      }
     },
     "localname": "DocumentInformationTable",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "xbrltype": "stringItemType"
    },
    "dei_DocumentPeriodEndDate": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "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.",
        "label": "Document Period End Date"
       }
      }
     },
     "localname": "DocumentPeriodEndDate",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "dateItemType"
    },
    "dei_DocumentQuarterlyReport": {
     "auth_ref": [
      "r484"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true only for a form used as an quarterly report.",
        "label": "Document Quarterly Report"
       }
      }
     },
     "localname": "DocumentQuarterlyReport",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_DocumentTransitionReport": {
     "auth_ref": [
      "r485"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true only for a form used as a transition report.",
        "label": "Document Transition Report"
       }
      }
     },
     "localname": "DocumentTransitionReport",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_DocumentType": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "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'.",
        "label": "Document Type"
       }
      }
     },
     "localname": "DocumentType",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "submissionTypeItemType"
    },
    "dei_EntityAddressAddressLine1": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Address Line 1 such as Attn, Building Name, Street Name",
        "label": "Entity Address, Address Line One"
       }
      }
     },
     "localname": "EntityAddressAddressLine1",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityAddressCityOrTown": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Name of the City or Town",
        "label": "Entity Address, City or Town"
       }
      }
     },
     "localname": "EntityAddressCityOrTown",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityAddressPostalZipCode": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Code for the postal or zip code",
        "label": "Entity Address, Postal Zip Code"
       }
      }
     },
     "localname": "EntityAddressPostalZipCode",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityAddressStateOrProvince": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Name of the state or province.",
        "label": "Entity Address, State or Province"
       }
      }
     },
     "localname": "EntityAddressStateOrProvince",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "stateOrProvinceItemType"
    },
    "dei_EntityCentralIndexKey": {
     "auth_ref": [
      "r486"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK.",
        "label": "Entity Central Index Key"
       }
      }
     },
     "localname": "EntityCentralIndexKey",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "centralIndexKeyItemType"
    },
    "dei_EntityCommonStockSharesOutstanding": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "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.",
        "label": "Entity Common Stock, Shares Outstanding"
       }
      }
     },
     "localname": "EntityCommonStockSharesOutstanding",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "sharesItemType"
    },
    "dei_EntityCurrentReportingStatus": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "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.",
        "label": "Entity Current Reporting Status"
       }
      }
     },
     "localname": "EntityCurrentReportingStatus",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "All the names of the entities being reported upon in a document. Any legal structure used to conduct activities or to hold assets. Some examples of such structures are corporations, partnerships, limited liability companies, grantor trusts, and other trusts. This item does not include business and geographical segments which are included in the geographical or business segments domains.",
        "label": "Entity [Domain]"
       }
      }
     },
     "localname": "EntityDomain",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited",
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information",
      "http://www.protolabs.com/20210630/role/statement-note-1-basis-of-presentation",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-tables",
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes",
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables",
      "http://www.protolabs.com/20210630/role/statement-note-2-recent-accounting-pronouncements",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-tables",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-tables",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-tables",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-tables",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables"
     ],
     "xbrltype": "domainItemType"
    },
    "dei_EntityEmergingGrowthCompany": {
     "auth_ref": [
      "r486"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate if registrant meets the emerging growth company criteria.",
        "label": "Entity Emerging Growth Company"
       }
      }
     },
     "localname": "EntityEmergingGrowthCompany",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntityFileNumber": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "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.",
        "label": "Entity File Number"
       }
      }
     },
     "localname": "EntityFileNumber",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "fileNumberItemType"
    },
    "dei_EntityFilerCategory": {
     "auth_ref": [
      "r486"
     ],
     "lang": {
      "en-us": {
       "role": {
        "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.",
        "label": "Entity Filer Category"
       }
      }
     },
     "localname": "EntityFilerCategory",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "filerCategoryItemType"
    },
    "dei_EntityIncorporationStateCountryCode": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Two-character EDGAR code representing the state or country of incorporation.",
        "label": "Entity Incorporation, State or Country Code"
       }
      }
     },
     "localname": "EntityIncorporationStateCountryCode",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "edgarStateCountryItemType"
    },
    "dei_EntityInteractiveDataCurrent": {
     "auth_ref": [
      "r494"
     ],
     "lang": {
      "en-us": {
       "role": {
        "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).",
        "label": "Entity Interactive Data Current"
       }
      }
     },
     "localname": "EntityInteractiveDataCurrent",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityRegistrantName": {
     "auth_ref": [
      "r486"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC.",
        "label": "Entity Registrant Name"
       }
      }
     },
     "localname": "EntityRegistrantName",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityShellCompany": {
     "auth_ref": [
      "r486"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act.",
        "label": "Entity Shell Company"
       }
      }
     },
     "localname": "EntityShellCompany",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntitySmallBusiness": {
     "auth_ref": [
      "r486"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicates that the company is a Smaller Reporting Company (SRC).",
        "label": "Entity Small Business"
       }
      }
     },
     "localname": "EntitySmallBusiness",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntityTaxIdentificationNumber": {
     "auth_ref": [
      "r486"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS.",
        "label": "Entity Tax Identification Number"
       }
      }
     },
     "localname": "EntityTaxIdentificationNumber",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "employerIdItemType"
    },
    "dei_LegalEntityAxis": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The set of legal entities associated with a report.",
        "label": "Legal Entity [Axis]"
       }
      }
     },
     "localname": "LegalEntityAxis",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited",
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information",
      "http://www.protolabs.com/20210630/role/statement-note-1-basis-of-presentation",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-tables",
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes",
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables",
      "http://www.protolabs.com/20210630/role/statement-note-2-recent-accounting-pronouncements",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-tables",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-tables",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-tables",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-tables",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables"
     ],
     "xbrltype": "stringItemType"
    },
    "dei_LocalPhoneNumber": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Local phone number for entity.",
        "label": "Local Phone Number"
       }
      }
     },
     "localname": "LocalPhoneNumber",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_Security12bTitle": {
     "auth_ref": [
      "r482"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Title of a 12(b) registered security.",
        "label": "Title of 12(b) Security"
       }
      }
     },
     "localname": "Security12bTitle",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "securityTitleItemType"
    },
    "dei_SecurityExchangeName": {
     "auth_ref": [
      "r483"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Name of the Exchange on which a security is registered.",
        "label": "Security Exchange Name"
       }
      }
     },
     "localname": "SecurityExchangeName",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "edgarExchangeCodeItemType"
    },
    "dei_TradingSymbol": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Trading symbol of an instrument as listed on an exchange.",
        "label": "Trading Symbol"
       }
      }
     },
     "localname": "TradingSymbol",
     "nsuri": "http://xbrl.sec.gov/dei/2021",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-document-and-entity-information"
     ],
     "xbrltype": "tradingSymbolItemType"
    },
    "prlb_Acquired3dHubsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents acquired 3D Hubs.",
        "label": "Acquired 3D Hubs [Member]"
       }
      }
     },
     "localname": "Acquired3dHubsMember",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to cash paid in connection with a business combination for which the initial accounting was incomplete.",
        "label": "prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid",
        "terseLabel": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Cash Paid"
       }
      }
     },
     "localname": "BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentCashPaid",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to contingent consideration in connection with a business combination for which the initial accounting was incomplete.",
        "label": "prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration",
        "terseLabel": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Contingent Consideration"
       }
      }
     },
     "localname": "BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentContingentConsideration",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to deferred tax liabilities assumed in connection with a business combination for which the initial accounting was incomplete.",
        "label": "prlb_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities",
        "terseLabel": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Deferred Tax Liabilities"
       }
      }
     },
     "localname": "BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentDeferredTaxLiabilities",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 2.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of liability arising from an inherited contingency (as defined) which has been recognized as of the acquisition date, classified as current",
        "label": "prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent",
        "terseLabel": "Current contingent consideration"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityCurrent",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 4.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of liability arising from an inherited contingency (as defined) which has been recognized as of the acquisition date, classified as noncurrent.",
        "label": "prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent",
        "terseLabel": "Long-term contingent consideration"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedContingentLiabilityNoncurrent",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 1.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of assets acquired including goodwill at the acquisition date",
        "label": "prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal",
        "totalLabel": "Total assets acquired"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_CNCMachiningFirstcutMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents the CNC Machining (Firstcut) product.",
        "label": "CNC Machining (Firstcut) [Member]"
       }
      }
     },
     "localname": "CNCMachiningFirstcutMember",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ESPPMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "ESPP [member",
        "label": "ESPP [Member]"
       }
      }
     },
     "localname": "ESPPMember",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The increase (decrease) during the period in percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.",
        "label": "prlb_EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod",
        "terseLabel": "Effective Income Tax Rate Continuing Operations Increase (Decrease) During the Period"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateContinuingOperationsIncreaseDecreaseDuringThePeriod",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_EmployeeStockPurchasePlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information pertaining to the Employee Stock Purchase Plan.",
        "label": "Employee Stock Purchase Plan [Member]"
       }
      }
     },
     "localname": "EmployeeStockPurchasePlanMember",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_EmployeeStockPurchasePlanOfferingPeriod": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The offering period during which employees may purchase stock through the Employee Stock Purchase Plan.",
        "label": "prlb_EmployeeStockPurchasePlanOfferingPeriod",
        "terseLabel": "Employee Stock Purchase Plan, Offering Period (Month)"
       }
      }
     },
     "localname": "EmployeeStockPurchasePlanOfferingPeriod",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "prlb_EuropeSegmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Operating segment for Europe",
        "label": "Europe Segment [Member]"
       }
      }
     },
     "localname": "EuropeSegmentMember",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
       "order": 2.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of amortization for asset, excluding financial asset and goodwill, lacking physical substance with finite life expected to be recognized after fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "prlb_FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour",
        "terseLabel": "Thereafter"
       }
      }
     },
     "localname": "FinitelivedIntangibleAssetExpectedAmortizationAfterYearFour",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "prlb_IncomeFromOperationsByGeographicAreaTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of income from operations by geographic area.",
        "label": "Income from Operations by Geographic Area [Table Text Block]"
       }
      }
     },
     "localname": "IncomeFromOperationsByGeographicAreaTableTextBlock",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "prlb_InjectionMoldingProtomoldMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents the Injection Molding (Protomold) product.",
        "label": "Injection Molding (Protomold) [Member]"
       }
      }
     },
     "localname": "InjectionMoldingProtomoldMember",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_JapanSegmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Operating segment for Japan.",
        "label": "Japan Segment [Member]"
       }
      }
     },
     "localname": "JapanSegmentMember",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_LongtermIncentivePlan2012Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information pertaining to the 2012 Long-Term Incentive Plan.",
        "label": "Long-Term Incentive Plan 2012 [Member]"
       }
      }
     },
     "localname": "LongtermIncentivePlan2012Member",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_NoteToFinancialStatementDetailsTextual": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note To Financial Statement Details Textual"
       }
      }
     },
     "localname": "NoteToFinancialStatementDetailsTextual",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_NotesToFinancialStatementsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Notes To Financial Statements [Abstract]"
       }
      }
     },
     "localname": "NotesToFinancialStatementsAbstract",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_OtherProductsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents other products.",
        "label": "Other Products [Member]"
       }
      }
     },
     "localname": "OtherProductsMember",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The lower limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment.",
        "label": "prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit",
        "terseLabel": "Percentage of Target Number Capable of Being Earned and Vesting, Lower Limit"
       }
      }
     },
     "localname": "PercentageOfTargetNumberCapableOfBeingEarnedAndVestingLowerLimit",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The upper limit percent of target number capable of being earned and vesting at the end of a three-year performance period depending on the company's performance in the final year of the performance period and the award recipient's continued employment.",
        "label": "prlb_PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit",
        "terseLabel": "Percentage of Target Number Capable of Being Earned and Vesting, Upper Limit"
       }
      }
     },
     "localname": "PercentageOfTargetNumberCapableOfBeingEarnedAndVestingUpperLimit",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "prlb_ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the valuation assumptions of share-based payment awards other than stock options.",
        "label": "Schedule of Share-based Payment Award, Awards Other Than Stock Options, Valuation Assumptions [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfSharebasedPaymentAwardAwardsOtherThanStockOptionsValuationAssumptionsTableTextBlock",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents the amount of shares related to a performance change related to equity instruments other than option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).",
        "label": "Performance change (in shares)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChange",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "prlb_SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents the weighted average grant date fair value per share in connection to a performance change related to equity instruments other than options.",
        "label": "Performance change, weighted-average grant date fair value (in dollars per share)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardEquityInstrumentsOtherThanOptionsPerformanceChangeWeightedAverageGrantDateFairValue",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "prlb_SheetMetalMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents the information pertaining to sheet metal.",
        "label": "Sheet Metal [Member]"
       }
      }
     },
     "localname": "SheetMetalMember",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_SoftwarePlatformMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information pertaining to software platform.",
        "label": "Software Platform [Member]"
       }
      }
     },
     "localname": "SoftwarePlatformMember",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_ThreeDPrintingFinelineMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents the 3D Printing (Fineline) product.",
        "label": "3D Printing (Fineline) [Member]"
       }
      }
     },
     "localname": "ThreeDPrintingFinelineMember",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_UnitedStatesSegmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Operating segment for United States.",
        "label": "United States Segment [Member]"
       }
      }
     },
     "localname": "UnitedStatesSegmentMember",
     "nsuri": "http://www.protolabs.com/20210630",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "domainItemType"
    },
    "prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 10 - Accumulated Other Comprehensive Income (Loss) - Other Comprehensive Loss (Details)"
       }
      }
     },
     "localname": "statement-statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-10-accumulated-other-comprehensive-income-loss-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 10 - Accumulated Other Comprehensive Income (Loss)"
       }
      }
     },
     "localname": "statement-statement-note-10-accumulated-other-comprehensive-income-loss-tables",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-12-segment-reporting-disaggregation-of-revenue-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Segment Reporting - Disaggregation of Revenue (Details)"
       }
      }
     },
     "localname": "statement-statement-note-12-segment-reporting-disaggregation-of-revenue-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-12-segment-reporting-income-from-operations-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Segment Reporting - Income From Operations (Details)"
       }
      }
     },
     "localname": "statement-statement-note-12-segment-reporting-income-from-operations-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Segment Reporting - Long-lived Assets by Geographic Region (Details)"
       }
      }
     },
     "localname": "statement-statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Segment Reporting - Revenue From Operations by Reportable Segment (Details)"
       }
      }
     },
     "localname": "statement-statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-12-segment-reporting-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 12 - Segment Reporting"
       }
      }
     },
     "localname": "statement-statement-note-12-segment-reporting-tables",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 3 - Net Income Per Common Share - Computation of Basic and Diluted Net Income Per Share (Details)"
       }
      }
     },
     "localname": "statement-statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-3-net-income-per-common-share-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 3 - Net Income Per Common Share"
       }
      }
     },
     "localname": "statement-statement-note-3-net-income-per-common-share-tables",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 4 - Business Combinations - Allocation of Purchase Price for the Acquisition of Rapid (Details)"
       }
      }
     },
     "localname": "statement-statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-4-business-combinations-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 4 - Business Combinations"
       }
      }
     },
     "localname": "statement-statement-note-4-business-combinations-tables",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 5 - Goodwill and Other Intangible Assets - Changes in the Carrying Amount of Goodwill (Details)"
       }
      }
     },
     "localname": "statement-statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 5 - Goodwill and Other Intangible Assets - Estimated Aggregated Amortization Expense (Details)"
       }
      }
     },
     "localname": "statement-statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 5 - Goodwill and Other Intangible Assets - Intangible Assets Other Than Goodwill (Details)"
       }
      }
     },
     "localname": "statement-statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-5-goodwill-and-other-intangible-assets-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 5 - Goodwill and Other Intangible Assets"
       }
      }
     },
     "localname": "statement-statement-note-5-goodwill-and-other-intangible-assets-tables",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 6 - Fair Value Measurements - Fair Value of Financial Assets Measured on a Recurring Basis (Details)"
       }
      }
     },
     "localname": "statement-statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-6-fair-value-measurements-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 6 - Fair Value Measurements"
       }
      }
     },
     "localname": "statement-statement-note-6-fair-value-measurements-tables",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 7 - Marketable Securities - Balance of Held-to-maturity Debt Securities by Contractual Maturity (Details)"
       }
      }
     },
     "localname": "statement-statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 7 - Marketable Securities - Short-term and Long-term Available for Sale Securities (Details)"
       }
      }
     },
     "localname": "statement-statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-7-marketable-securities-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 7 - Marketable Securities"
       }
      }
     },
     "localname": "statement-statement-note-7-marketable-securities-tables",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-8-inventory-inventory-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 8 - Inventory - Inventory (Details)"
       }
      }
     },
     "localname": "statement-statement-note-8-inventory-inventory-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-8-inventory-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 8 - Inventory"
       }
      }
     },
     "localname": "statement-statement-note-8-inventory-tables",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Stock-based Compensation - Assumptions Used in the Black-Scholes Option Pricing Model (Details)"
       }
      }
     },
     "localname": "statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Stock-based Compensation - Assumptions Used in the Valuation of Performance Stock (Details)"
       }
      }
     },
     "localname": "statement-statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Stock-based Compensation - Assumptions Used to Estimate the Fair Value of the ESPP (Details)"
       }
      }
     },
     "localname": "statement-statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-9-stockbased-compensation-performance-stock-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Stock-based Compensation - Performance Stock (Details)"
       }
      }
     },
     "localname": "statement-statement-note-9-stockbased-compensation-performance-stock-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-9-stockbased-compensation-restricted-stock-options-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Stock-based Compensation - Restricted Stock Options (Details)"
       }
      }
     },
     "localname": "statement-statement-note-9-stockbased-compensation-restricted-stock-options-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-9-stockbased-compensation-stock-option-activity-details": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Stock-based Compensation - Stock Option Activity (Details)"
       }
      }
     },
     "localname": "statement-statement-note-9-stockbased-compensation-stock-option-activity-details",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "prlb_statement-statement-note-9-stockbased-compensation-tables": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Note 9 - Stock-based Compensation"
       }
      }
     },
     "localname": "statement-statement-note-9-stockbased-compensation-tables",
     "nsuri": "http://www.protolabs.com/20210630",
     "xbrltype": "stringItemType"
    },
    "srt_ConsolidationItemsAxis": {
     "auth_ref": [
      "r93",
      "r130",
      "r142",
      "r143",
      "r144",
      "r145",
      "r146",
      "r148",
      "r152",
      "r227",
      "r228",
      "r229",
      "r230",
      "r231",
      "r232",
      "r234",
      "r235",
      "r237",
      "r239",
      "r240"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Consolidation Items [Axis]"
       }
      }
     },
     "localname": "ConsolidationItemsAxis",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ConsolidationItemsDomain": {
     "auth_ref": [
      "r93",
      "r130",
      "r142",
      "r143",
      "r144",
      "r145",
      "r146",
      "r148",
      "r152",
      "r227",
      "r228",
      "r229",
      "r230",
      "r231",
      "r232",
      "r234",
      "r235",
      "r237",
      "r239",
      "r240"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Consolidation Items [Domain]"
       }
      }
     },
     "localname": "ConsolidationItemsDomain",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_EuropeMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Europe [Member]"
       }
      }
     },
     "localname": "EuropeMember",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MaximumMember": {
     "auth_ref": [
      "r242",
      "r248",
      "r266",
      "r269",
      "r401",
      "r402",
      "r403",
      "r404",
      "r405",
      "r406",
      "r425",
      "r458",
      "r461",
      "r479",
      "r480"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Maximum [Member]"
       }
      }
     },
     "localname": "MaximumMember",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MinimumMember": {
     "auth_ref": [
      "r242",
      "r248",
      "r266",
      "r269",
      "r401",
      "r402",
      "r403",
      "r404",
      "r405",
      "r406",
      "r425",
      "r458",
      "r461",
      "r479",
      "r480"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Minimum [Member]"
       }
      }
     },
     "localname": "MinimumMember",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ProductOrServiceAxis": {
     "auth_ref": [
      "r154",
      "r253",
      "r254",
      "r427",
      "r457",
      "r459"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Product and Service [Axis]"
       }
      }
     },
     "localname": "ProductOrServiceAxis",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ProductsAndServicesDomain": {
     "auth_ref": [
      "r154",
      "r253",
      "r254",
      "r427",
      "r457",
      "r459"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Product and Service [Domain]"
       }
      }
     },
     "localname": "ProductsAndServicesDomain",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_RangeAxis": {
     "auth_ref": [
      "r242",
      "r248",
      "r256",
      "r266",
      "r269",
      "r401",
      "r402",
      "r403",
      "r404",
      "r405",
      "r406",
      "r425",
      "r458",
      "r461",
      "r479",
      "r480"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statistical Measurement [Axis]"
       }
      }
     },
     "localname": "RangeAxis",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_RangeMember": {
     "auth_ref": [
      "r242",
      "r248",
      "r256",
      "r266",
      "r269",
      "r401",
      "r402",
      "r403",
      "r404",
      "r405",
      "r406",
      "r425",
      "r458",
      "r461",
      "r479",
      "r480"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statistical Measurement [Domain]"
       }
      }
     },
     "localname": "RangeMember",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ScenarioForecastMember": {
     "auth_ref": [
      "r103",
      "r267"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Forecast [Member]"
       }
      }
     },
     "localname": "ScenarioForecastMember",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ScenarioUnspecifiedDomain": {
     "auth_ref": [
      "r103",
      "r108",
      "r267"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Scenario [Domain]"
       }
      }
     },
     "localname": "ScenarioUnspecifiedDomain",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_SegmentGeographicalDomain": {
     "auth_ref": [
      "r155",
      "r156",
      "r253",
      "r255",
      "r460",
      "r470",
      "r471",
      "r472",
      "r473",
      "r474",
      "r475",
      "r476",
      "r477",
      "r478"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Geographical [Domain]"
       }
      }
     },
     "localname": "SegmentGeographicalDomain",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_StatementGeographicalAxis": {
     "auth_ref": [
      "r155",
      "r156",
      "r253",
      "r255",
      "r460",
      "r469",
      "r470",
      "r471",
      "r472",
      "r473",
      "r474",
      "r475",
      "r476",
      "r477",
      "r478"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Geographical [Axis]"
       }
      }
     },
     "localname": "StatementGeographicalAxis",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_StatementScenarioAxis": {
     "auth_ref": [
      "r103",
      "r108",
      "r226",
      "r267",
      "r394"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Scenario [Axis]"
       }
      }
     },
     "localname": "StatementScenarioAxis",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountsPayableCurrent": {
     "auth_ref": [
      "r32",
      "r393"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 2.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "us-gaap_AccountsPayableCurrent",
        "terseLabel": "Accounts payable"
       }
      }
     },
     "localname": "AccountsPayableCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccountsReceivableNetCurrent": {
     "auth_ref": [
      "r6",
      "r16",
      "r162",
      "r163"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current.",
        "label": "Accounts receivable, net of allowance for doubtful accounts of $1,997 and $1,781 as of June 30, 2021 and December 31, 2020, respectively"
       }
      }
     },
     "localname": "AccountsReceivableNetCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments": {
     "auth_ref": [
      "r84"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 9.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The sum of the periodic adjustments of the differences between securities' face values and purchase prices that are charged against earnings. This is called accretion if the security was purchased at a discount and amortization if it was purchased at premium. As a noncash item, this element is an adjustment to net income when calculating cash provided by or used in operations using the indirect method.",
        "label": "us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments",
        "negatedLabel": "Amortization of marketable securities"
       }
      }
     },
     "localname": "AccretionAmortizationOfDiscountsAndPremiumsInvestments",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedIncomeTaxesCurrent": {
     "auth_ref": [
      "r13",
      "r433",
      "r446"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 4.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying amount as of the balance sheet date of the unpaid sum of the known and estimated amounts payable to satisfy all currently due domestic and foreign income tax obligations.",
        "label": "Income taxes payable"
       }
      }
     },
     "localname": "AccruedIncomeTaxesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedLiabilitiesAndOtherLiabilities": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of expenses incurred but not yet paid nor invoiced, and liabilities classified as other.",
        "label": "Accrued liabilities and other"
       }
      }
     },
     "localname": "AccruedLiabilitiesAndOtherLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedNetUnrealizedInvestmentGainLossMember": {
     "auth_ref": [
      "r45",
      "r46",
      "r47",
      "r51",
      "r58",
      "r59",
      "r60"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accumulated unrealized gain (loss) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), attributable to parent.",
        "label": "AOCI, Accumulated Gain (Loss), Debt Securities, Available-for-sale, Parent [Member]"
       }
      }
     },
     "localname": "AccumulatedNetUnrealizedInvestmentGainLossMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax": {
     "auth_ref": [
      "r19",
      "r49",
      "r50",
      "r51",
      "r447",
      "r466",
      "r467"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accumulated change in equity from transactions and other events and circumstances from non-owner sources, net of tax effect, at period end. Excludes Net Income (Loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners. Includes foreign currency translation items, certain pension adjustments, unrealized gains and losses on certain investments in debt and equity securities, other than temporary impairment (OTTI) losses related to factors other than credit losses on available-for-sale and held-to-maturity debt securities that an entity does not intend to sell and it is not more likely than not that the entity will be required to sell before recovery of the amortized cost basis, as well as changes in the fair value of derivatives related to the effective portion of a designated cash flow hedge.",
        "label": "Accumulated other comprehensive loss"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeMember": {
     "auth_ref": [
      "r48",
      "r51",
      "r58",
      "r59",
      "r60",
      "r95",
      "r96",
      "r97",
      "r363",
      "r462",
      "r463",
      "r495"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accumulated increase (decrease) in equity from transactions and other events and circumstances from non-owner sources, attributable to the parent. Excludes net income (loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners.",
        "label": "AOCI Attributable to Parent [Member]"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccumulatedTranslationAdjustmentMember": {
     "auth_ref": [
      "r44",
      "r51",
      "r58",
      "r59",
      "r60",
      "r363",
      "r382",
      "r383",
      "r384",
      "r385",
      "r386"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accumulated other comprehensive income (loss) resulting from foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature, attributable to the parent.",
        "label": "Accumulated Foreign Currency Adjustment Attributable to Parent [Member]"
       }
      }
     },
     "localname": "AccumulatedTranslationAdjustmentMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AdditionalPaidInCapitalCommonStock": {
     "auth_ref": [
      "r17"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 2.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Value received from shareholders in common stock-related transactions that are in excess of par value or stated value and amounts received from other stock-related transactions. Includes only common stock transactions (excludes preferred stock transactions). May be called contributed capital, capital in excess of par, capital surplus, or paid-in capital.",
        "label": "Additional paid-in capital"
       }
      }
     },
     "localname": "AdditionalPaidInCapitalCommonStock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AdditionalPaidInCapitalMember": {
     "auth_ref": [
      "r95",
      "r96",
      "r97",
      "r302",
      "r303",
      "r304",
      "r368"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Excess of issue price over par or stated value of the entity's capital stock and amounts received from other transactions involving the entity's stock or stockholders.",
        "label": "Additional Paid-in Capital [Member]"
       }
      }
     },
     "localname": "AdditionalPaidInCapitalMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue": {
     "auth_ref": [
      "r270",
      "r272",
      "r308",
      "r309"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement.",
        "label": "Stock-based compensation expense"
       }
      }
     },
     "localname": "AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Adjustments to reconcile net income to net cash provided by operating activities:"
       }
      }
     },
     "localname": "AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AllocatedShareBasedCompensationExpense": {
     "auth_ref": [
      "r272",
      "r298",
      "r307"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of expense for award under share-based payment arrangement. Excludes amount capitalized.",
        "label": "us-gaap_AllocatedShareBasedCompensationExpense",
        "terseLabel": "Share-based Payment Arrangement, Expense"
       }
      }
     },
     "localname": "AllocatedShareBasedCompensationExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent": {
     "auth_ref": [
      "r23",
      "r164",
      "r192"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of allowance for credit loss on accounts receivable, classified as current.",
        "label": "Allowance for doubtful accounts"
       }
      }
     },
     "localname": "AllowanceForDoubtfulAccountsReceivableCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AmortizationOfIntangibleAssets": {
     "auth_ref": [
      "r83",
      "r212",
      "r218"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate expense charged against earnings to allocate the cost of intangible assets (nonphysical assets not used in production) in a systematic and rational manner to the periods expected to benefit from such assets. As a noncash expense, this element is added back to net income when calculating cash provided by or used in operations using the indirect method.",
        "label": "us-gaap_AmortizationOfIntangibleAssets",
        "terseLabel": "Amortization of Intangible Assets, Total"
       }
      }
     },
     "localname": "AmortizationOfIntangibleAssets",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_Assets": {
     "auth_ref": [
      "r88",
      "r138",
      "r144",
      "r150",
      "r188",
      "r227",
      "r228",
      "r229",
      "r231",
      "r232",
      "r233",
      "r234",
      "r236",
      "r238",
      "r240",
      "r241",
      "r360",
      "r364",
      "r379",
      "r391",
      "r393",
      "r432",
      "r445"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are recognized. Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.",
        "label": "us-gaap_Assets",
        "totalLabel": "Total assets"
       }
      }
     },
     "localname": "Assets",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AssetsCurrent": {
     "auth_ref": [
      "r8",
      "r9",
      "r41",
      "r88",
      "r188",
      "r227",
      "r228",
      "r229",
      "r231",
      "r232",
      "r233",
      "r234",
      "r236",
      "r238",
      "r240",
      "r241",
      "r360",
      "r364",
      "r379",
      "r391",
      "r393"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 4.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are expected to be realized in cash, sold, or consumed within one year (or the normal operating cycle, if longer). Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.",
        "label": "us-gaap_AssetsCurrent",
        "totalLabel": "Total current assets"
       }
      }
     },
     "localname": "AssetsCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AssetsCurrentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current assets"
       }
      }
     },
     "localname": "AssetsCurrentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AssetsFairValueDisclosure": {
     "auth_ref": [
      "r371"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value portion of probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.",
        "label": "us-gaap_AssetsFairValueDisclosure",
        "terseLabel": "Total"
       }
      }
     },
     "localname": "AssetsFairValueDisclosure",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax": {
     "auth_ref": [
      "r171"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, before tax, of unrealized gain in accumulated other comprehensive income (AOCI) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).",
        "label": "us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax",
        "terseLabel": "Unrealized Gains"
       }
      }
     },
     "localname": "AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax": {
     "auth_ref": [
      "r172"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, before tax, of unrealized loss in accumulated other comprehensive income (AOCI) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).",
        "label": "us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax",
        "negatedTerseLabel": "Unrealized Losses"
       }
      }
     },
     "localname": "AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis": {
     "auth_ref": [
      "r169",
      "r198"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amortized cost of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).",
        "label": "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis",
        "terseLabel": "Amortized Cost"
       }
      }
     },
     "localname": "AvailableForSaleDebtSecuritiesAmortizedCostBasis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details": {
       "order": 1.0,
       "parentTag": "us-gaap_AvailableForSaleSecuritiesDebtSecurities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), with single maturity date and allocated without single maturity date, maturing in next rolling fiscal year following latest fiscal year. For interim and annual periods when interim period is reported on rolling approach, from latest statement of financial position date.",
        "label": "Due in one year or less"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesDebtMaturitiesNextRollingTwelveMonthsFairValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details": {
       "order": 0.0,
       "parentTag": "us-gaap_AvailableForSaleSecuritiesDebtSecurities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value of investment in debt security, measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), with single maturity date and allocated without single maturity date, maturing in next rolling fiscal year through fifth year following latest fiscal year. For interim and annual periods when interim period is reported on rolling approach, from latest statement of financial position date.",
        "label": "Due after one year through five years"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesDebtMaturitiesRollingYearTwoThroughFiveFairValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesDebtSecurities": {
     "auth_ref": [
      "r167",
      "r170",
      "r198",
      "r435"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).",
        "label": "Marketable securities",
        "terseLabel": "Fair Value",
        "totalLabel": "Total marketable securities"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesDebtSecurities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AwardTypeAxis": {
     "auth_ref": [
      "r273",
      "r300"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of award under share-based payment arrangement.",
        "label": "Award Type [Axis]"
       }
      }
     },
     "localname": "AwardTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BankTimeDepositsMember": {
     "auth_ref": [
      "r441"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Certificates of deposit (CD) or savings accounts with a fixed term or understanding the customer can only withdraw by giving advanced notice with a bank or other financial institution. A CD is a short to medium-term investment available at banks and savings and loan institutions where a customer agrees to lend money to the institution for a certain amount of time and is paid a predetermined rate of interest.",
        "label": "Bank Time Deposits [Member]"
       }
      }
     },
     "localname": "BankTimeDepositsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BusinessAcquisitionAcquireeDomain": {
     "auth_ref": [
      "r265",
      "r268"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Identification of the acquiree in a material business combination (or series of individually immaterial business combinations), which may include the name or other type of identification of the acquiree.",
        "label": "Business Acquisition, Acquiree [Domain]"
       }
      }
     },
     "localname": "BusinessAcquisitionAcquireeDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BusinessAcquisitionAxis": {
     "auth_ref": [
      "r265",
      "r268",
      "r336",
      "r337"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by business combination or series of individually immaterial business combinations.",
        "label": "Business Acquisition [Axis]"
       }
      }
     },
     "localname": "BusinessAcquisitionAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued": {
     "auth_ref": [
      "r353"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares of equity interests issued or issuable to acquire entity.",
        "label": "us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued",
        "terseLabel": "Business Acquisition, Equity Interest Issued or Issuable, Number of Shares (in shares)"
       }
      }
     },
     "localname": "BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_BusinessCombinationConsiderationTransferred1": {
     "auth_ref": [
      "r347",
      "r348",
      "r351"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer.",
        "label": "us-gaap_BusinessCombinationConsiderationTransferred1",
        "terseLabel": "Business Combination, Consideration Transferred, Total",
        "totalLabel": "Total purchase consideration"
       }
      }
     },
     "localname": "BusinessCombinationConsiderationTransferred1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable": {
     "auth_ref": [
      "r347",
      "r348"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 1.0,
       "parentTag": "us-gaap_BusinessCombinationConsiderationTransferred1",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of equity interests of the acquirer, including instruments or interests issued or issuable in consideration for the business combination.",
        "label": "us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable",
        "terseLabel": "Business Combination, Consideration Transferred, Equity Interests Issued and Issuable"
       }
      }
     },
     "localname": "BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1": {
     "auth_ref": [
      "r82",
      "r356"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 11.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in the value of a contingent consideration liability, including, but not limited to, differences arising upon settlement.",
        "label": "Fair value of contingent consideration",
        "terseLabel": "Business Combination, Contingent Consideration Arrangements, Change in Amount of Contingent Consideration, Liability"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh": {
     "auth_ref": [
      "r355"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "For contingent consideration arrangements recognized in connection with a business combination, this element represents an estimate of the high-end of the potential range (undiscounted) of the consideration which may be paid.",
        "label": "us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh",
        "terseLabel": "Business Combination, Contingent Consideration Arrangements, Range of Outcomes, Value, High"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationLiability": {
     "auth_ref": [
      "r346",
      "r349",
      "r354"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details": {
       "order": 0.0,
       "parentTag": "us-gaap_LiabilitiesFairValueDisclosure",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liability recognized arising from contingent consideration in a business combination.",
        "label": "Contingent consideration",
        "terseLabel": "Business Combination, Contingent Consideration, Liability, Total"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsiderationLiability",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationLiabilityCurrent": {
     "auth_ref": [
      "r346",
      "r350"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liability recognized arising from contingent consideration in a business combination, expected to be settled within one year or the normal operating cycle, if longer.",
        "label": "Current contingent consideration"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsiderationLiabilityCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationLiabilityNoncurrent": {
     "auth_ref": [
      "r346",
      "r350"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 2.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liability recognized arising from contingent consideration in a business combination, expected to be settled beyond one year or the normal operating cycle, if longer.",
        "label": "Long-term contingent consideration"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsiderationLiabilityNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationDisclosureTextBlock": {
     "auth_ref": [
      "r357"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for a business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities. The disclosure may include leverage buyout transactions (as applicable).",
        "label": "Business Combination Disclosure [Text Block]"
       }
      }
     },
     "localname": "BusinessCombinationDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles": {
     "auth_ref": [
      "r340"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "This element represents the amount of any measurement period adjustment (as defined) realized during the reporting period to intangibles acquired in connection with a business combination for which the initial accounting was incomplete.",
        "label": "us-gaap_BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles",
        "terseLabel": "Business Combination, Provisional Information, Initial Accounting Incomplete, Adjustment, Intangibles"
       }
      }
     },
     "localname": "BusinessCombinationProvisionalInformationInitialAccountingIncompleteAdjustmentIntangibles",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Assets acquired:"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets": {
     "auth_ref": [
      "r338"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 3.0,
       "parentTag": "prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer, acquired at the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets",
        "terseLabel": "Current assets"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssets",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities": {
     "auth_ref": [
      "r338"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 1.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liabilities due within one year or within the normal operating cycle, if longer, assumed at the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities",
        "terseLabel": "Current liabilities"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities": {
     "auth_ref": [
      "r338"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 3.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences assumed at the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities",
        "terseLabel": "Long-term deferred tax liabilities"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets": {
     "auth_ref": [
      "r338"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 2.0,
       "parentTag": "prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of assets, excluding financial assets and goodwill, that lack physical substance, having a projected indefinite period of benefit, acquired at the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets",
        "terseLabel": "Intangible assets"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIndefiniteLivedIntangibleAssets",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities": {
     "auth_ref": [
      "r338"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 0.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liabilities assumed at the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
        "totalLabel": "Total liabilities assumed"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Liabilities assumed:"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities": {
     "auth_ref": [
      "r338"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 0.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liabilities due after one year or the normal operating cycle, if longer, assumed at the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities",
        "terseLabel": "Other long-term liabilities"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets": {
     "auth_ref": [
      "r338"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 0.0,
       "parentTag": "prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of other assets expected to be realized or consumed after one year or the normal operating cycle, if longer, acquired at the acquisition date.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets",
        "terseLabel": "Other long-term assets"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedOtherNoncurrentAssets",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet": {
     "auth_ref": [
      "r338"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount recognized for assets, including goodwill, in excess of (less than) the aggregate liabilities assumed.",
        "label": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
        "totalLabel": "Net assets acquired"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAcquiredFromAcquisition": {
     "auth_ref": [
      "r73"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 1.0,
       "parentTag": "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash inflow associated with the acquisition of business during the period (for example, cash that was held by the acquired business).",
        "label": "us-gaap_CashAcquiredFromAcquisition",
        "negatedTerseLabel": "Cash acquired"
       }
      }
     },
     "localname": "CashAcquiredFromAcquisition",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsAtCarryingValue": {
     "auth_ref": [
      "r4",
      "r29",
      "r85"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 2.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.",
        "label": "Cash and cash equivalents"
       }
      }
     },
     "localname": "CashAndCashEquivalentsAtCarryingValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsAxis": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of cash and cash equivalent balance.",
        "label": "Cash and Cash Equivalents [Axis]"
       }
      }
     },
     "localname": "CashAndCashEquivalentsAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_CashAndCashEquivalentsFairValueDisclosure": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value portion of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "us-gaap_CashAndCashEquivalentsFairValueDisclosure",
        "terseLabel": "Cash and cash equivalents"
       }
      }
     },
     "localname": "CashAndCashEquivalentsFairValueDisclosure",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": {
     "auth_ref": [
      "r80",
      "r85",
      "r86"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including, but not limited to, disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations",
        "periodEndLabel": "Cash and cash equivalents, end of period",
        "periodStartLabel": "Cash and cash equivalents, beginning of period"
       }
      }
     },
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": {
     "auth_ref": [
      "r80",
      "r380"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in cash, cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including effect from exchange rate change. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
        "totalLabel": "Net decrease in cash and cash equivalents"
       }
      }
     },
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CommercialPaperNotIncludedWithCashAndCashEquivalentsMember": {
     "auth_ref": [
      "r257",
      "r376"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Unsecured promissory note (generally negotiable) that provides institutions with short-term funds that is excluded from cash and cash equivalents.",
        "label": "Commercial Paper, Not Included with Cash and Cash Equivalents [Member]"
       }
      }
     },
     "localname": "CommercialPaperNotIncludedWithCashAndCashEquivalentsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CommonStockMember": {
     "auth_ref": [
      "r95",
      "r96",
      "r368"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Stock that is subordinate to all other stock of the issuer.",
        "label": "Common Stock [Member]"
       }
      }
     },
     "localname": "CommonStockMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CommonStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r15"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Face amount or stated value per share of common stock.",
        "label": "Common stock, par value (in dollars per share)"
       }
      }
     },
     "localname": "CommonStockParOrStatedValuePerShare",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_CommonStockSharesAuthorized": {
     "auth_ref": [
      "r15"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The maximum number of common shares permitted to be issued by an entity's charter and bylaws.",
        "label": "Common stock, shares authorized (in shares)"
       }
      }
     },
     "localname": "CommonStockSharesAuthorized",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockSharesIssued": {
     "auth_ref": [
      "r15"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury.",
        "label": "Common stock, shares issued (in shares)"
       }
      }
     },
     "localname": "CommonStockSharesIssued",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockSharesOutstanding": {
     "auth_ref": [
      "r15",
      "r250"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation.",
        "label": "Common stock, shares outstanding (in shares)",
        "periodEndLabel": "Balance (in shares)",
        "periodStartLabel": "Balance (in shares)"
       }
      }
     },
     "localname": "CommonStockSharesOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockValue": {
     "auth_ref": [
      "r15",
      "r393"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 4.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity.",
        "label": "Common stock, $0.001 par value, authorized 150,000,000 shares; issued and outstanding 27,761,063 and 26,776,796 shares as of June 30, 2021 and December 31, 2020, respectively"
       }
      }
     },
     "localname": "CommonStockValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ComprehensiveIncomeNetOfTax": {
     "auth_ref": [
      "r54",
      "r56",
      "r57",
      "r64",
      "r439",
      "r453"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners.",
        "label": "Comprehensive income"
       }
      }
     },
     "localname": "ComprehensiveIncomeNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ComprehensiveIncomeNetOfTaxAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Comprehensive Income (net of tax)"
       }
      }
     },
     "localname": "ComprehensiveIncomeNetOfTaxAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ComputerSoftwareIntangibleAssetMember": {
     "auth_ref": [
      "r213",
      "r216",
      "r345"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Collection of computer programs and related data that provide instructions to a computer, for example, but not limited to, application program, control module or operating system, that perform one or more particular functions or tasks.",
        "label": "Computer Software, Intangible Asset [Member]"
       }
      }
     },
     "localname": "ComputerSoftwareIntangibleAssetMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CorporateDebtSecuritiesMember": {
     "auth_ref": [
      "r257",
      "r264",
      "r468"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Debt securities issued by domestic or foreign corporate business, banks and other entities with a promise of repayment.",
        "label": "Corporate Debt Securities [Member]"
       }
      }
     },
     "localname": "CorporateDebtSecuritiesMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CostOfGoodsAndServicesSold": {
     "auth_ref": [
      "r67",
      "r427"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_GrossProfit",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate costs related to goods produced and sold and services rendered by an entity during the reporting period. This excludes costs incurred during the reporting period related to financial services rendered and other revenue generating activities.",
        "label": "Cost of revenue"
       }
      }
     },
     "localname": "CostOfGoodsAndServicesSold",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CustomerRelationshipsMember": {
     "auth_ref": [
      "r344"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Customer relationship that exists between an entity and its customer, for example, but not limited to, tenant relationships.",
        "label": "Customer Relationships [Member]"
       }
      }
     },
     "localname": "CustomerRelationshipsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss": {
     "auth_ref": [
      "r182"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 10.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of realized gain (loss) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).",
        "label": "us-gaap_DebtSecuritiesAvailableForSaleRealizedGainLoss",
        "negatedLabel": "Realized gain on available-sale-securities"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleRealizedGainLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleTableTextBlock": {
     "auth_ref": [
      "r183"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).",
        "label": "Debt Securities, Available-for-sale [Table Text Block]"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DeferredIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r83",
      "r89",
      "r321",
      "r326",
      "r327",
      "r328"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 13.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Deferred taxes"
       }
      }
     },
     "localname": "DeferredIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxLiabilitiesNet": {
     "auth_ref": [
      "r313",
      "r314"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting.",
        "label": "Long-term deferred tax liabilities"
       }
      }
     },
     "localname": "DeferredIncomeTaxLiabilitiesNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DepreciationDepletionAndAmortization": {
     "auth_ref": [
      "r83",
      "r133"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate expense recognized in the current period that allocates the cost of tangible assets, intangible assets, or depleting assets to periods that benefit from use of the assets.",
        "label": "Depreciation and amortization"
       }
      }
     },
     "localname": "DepreciationDepletionAndAmortization",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DisaggregationOfRevenueTableTextBlock": {
     "auth_ref": [
      "r253"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of disaggregation of revenue into categories depicting how nature, amount, timing, and uncertainty of revenue and cash flows are affected by economic factor.",
        "label": "Disaggregation of Revenue [Table Text Block]"
       }
      }
     },
     "localname": "DisaggregationOfRevenueTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock": {
     "auth_ref": [
      "r310"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for share-based payment arrangement.",
        "label": "Share-based Payment Arrangement [Text Block]"
       }
      }
     },
     "localname": "DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DisclosureOfReclassificationAmountTextBlock": {
     "auth_ref": [
      "r70"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for any adjustments made during the period to avoid double counting in comprehensive income items displayed as part of net income that also had been displayed as part of other comprehensive income in that period or earlier periods. These adjustments include reclassifications to net income of items in accumulated comprehensive income, such as deferred gains or losses on qualifying hedges when hedged item reported in net income, holding gains or losses on available-for-sale securities transferred into trading category, unrealized holding gains or losses on debt securities transferred from held-to-maturity category into available-for-sale category and accumulated translation adjustment attributable to foreign subsidiary or investment in foreign entity upon sale or liquidation.",
        "label": "Disclosure of Reclassification Amount [Text Block]"
       }
      }
     },
     "localname": "DisclosureOfReclassificationAmountTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DisclosureTextBlockAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_DisclosureTextBlockAbstract",
        "terseLabel": "Notes to Financial Statements"
       }
      }
     },
     "localname": "DisclosureTextBlockAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-1-basis-of-presentation",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss",
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting",
      "http://www.protolabs.com/20210630/role/statement-note-2-recent-accounting-pronouncements",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerShareAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Net income per share:"
       }
      }
     },
     "localname": "EarningsPerShareAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerShareBasic": {
     "auth_ref": [
      "r65",
      "r100",
      "r101",
      "r102",
      "r103",
      "r104",
      "r109",
      "r111",
      "r116",
      "r117",
      "r118",
      "r122",
      "r123",
      "r369",
      "r370",
      "r440",
      "r454"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.",
        "label": "Basic (in dollars per share)",
        "terseLabel": "Basic (in dollars per share)"
       }
      }
     },
     "localname": "EarningsPerShareBasic",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EarningsPerShareDiluted": {
     "auth_ref": [
      "r65",
      "r100",
      "r101",
      "r102",
      "r103",
      "r104",
      "r111",
      "r116",
      "r117",
      "r118",
      "r122",
      "r123",
      "r369",
      "r370",
      "r440",
      "r454"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period.",
        "label": "Diluted (in dollars per share)",
        "terseLabel": "Diluted (in dollars per share)"
       }
      }
     },
     "localname": "EarningsPerShareDiluted",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EarningsPerShareTextBlock": {
     "auth_ref": [
      "r119",
      "r120",
      "r121",
      "r124"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for earnings per share.",
        "label": "Earnings Per Share [Text Block]"
       }
      }
     },
     "localname": "EarningsPerShareTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": {
     "auth_ref": [
      "r380"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 3.0,
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) from effect of exchange rate changes on cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; held in foreign currencies; including, but not limited to, disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "Effect of exchange rate changes on cash and cash equivalents"
       }
      }
     },
     "localname": "EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateContinuingOperations": {
     "auth_ref": [
      "r316"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.",
        "label": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
        "terseLabel": "Effective Income Tax Rate Reconciliation, Percent, Total"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateContinuingOperations",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate": {
     "auth_ref": [
      "r90",
      "r316",
      "r329"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of domestic federal statutory tax rate applicable to pretax income (loss).",
        "label": "us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate",
        "terseLabel": "Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EmployeeRelatedLiabilitiesCurrent": {
     "auth_ref": [
      "r35"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 3.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Total of the carrying values as of the balance sheet date of obligations incurred through that date and payable for obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Accrued compensation"
       }
      }
     },
     "localname": "EmployeeRelatedLiabilitiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized": {
     "auth_ref": [
      "r299"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cost not yet recognized for nonvested award under share-based payment arrangement.",
        "label": "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized",
        "terseLabel": "Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1": {
     "auth_ref": [
      "r299"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
        "terseLabel": "Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition (Year)"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_EmployeeStockOptionMember": {
     "auth_ref": [
      "r297"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-based payment arrangement granting right, subject to vesting and other restrictions, to purchase or sell certain number of shares at predetermined price for specified period of time.",
        "label": "Share-based Payment Arrangement, Option [Member]"
       }
      }
     },
     "localname": "EmployeeStockOptionMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EquityComponentDomain": {
     "auth_ref": [
      "r0",
      "r58",
      "r59",
      "r60",
      "r95",
      "r96",
      "r97",
      "r99",
      "r105",
      "r107",
      "r125",
      "r191",
      "r250",
      "r251",
      "r302",
      "r303",
      "r304",
      "r322",
      "r323",
      "r368",
      "r381",
      "r382",
      "r383",
      "r384",
      "r385",
      "r386",
      "r462",
      "r463",
      "r464",
      "r495"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Components of equity are the parts of the total Equity balance including that which is allocated to common, preferred, treasury stock, retained earnings, etc.",
        "label": "Equity Component [Domain]"
       }
      }
     },
     "localname": "EquityComponentDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueAssetsMeasuredOnRecurringBasisTextBlock": {
     "auth_ref": [
      "r371",
      "r372"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of assets, including [financial] instruments measured at fair value that are classified in stockholders' equity, if any, by class that are measured at fair value on a recurring basis. The disclosures contemplated herein include the fair value measurements at the reporting date by the level within the fair value hierarchy in which the fair value measurements in their entirety fall, segregating fair value measurements using quoted prices in active markets for identical assets (Level 1), significant other observable inputs (Level 2), and significant unobservable inputs (Level 3).",
        "label": "Fair Value, Assets Measured on Recurring Basis [Table Text Block]"
       }
      }
     },
     "localname": "FairValueAssetsMeasuredOnRecurringBasisTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain": {
     "auth_ref": [
      "r375"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Class of asset.",
        "label": "Asset Class [Domain]"
       }
      }
     },
     "localname": "FairValueAssetsMeasuredOnRecurringBasisUnobservableInputReconciliationByAssetClassDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueByAssetClassAxis": {
     "auth_ref": [
      "r371",
      "r377"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by class of asset.",
        "label": "Asset Class [Axis]"
       }
      }
     },
     "localname": "FairValueByAssetClassAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueByFairValueHierarchyLevelAxis": {
     "auth_ref": [
      "r243",
      "r245",
      "r246",
      "r257",
      "r258",
      "r259",
      "r260",
      "r261",
      "r262",
      "r263",
      "r264",
      "r372",
      "r398",
      "r399",
      "r400"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by level within fair value hierarchy and fair value measured at net asset value per share as practical expedient.",
        "label": "Fair Value Hierarchy and NAV [Axis]"
       }
      }
     },
     "localname": "FairValueByFairValueHierarchyLevelAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueByMeasurementFrequencyAxis": {
     "auth_ref": [
      "r371",
      "r372",
      "r373",
      "r374",
      "r378"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by measurement frequency.",
        "label": "Measurement Frequency [Axis]"
       }
      }
     },
     "localname": "FairValueByMeasurementFrequencyAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueDisclosuresTextBlock": {
     "auth_ref": [
      "r376"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for the fair value of financial instruments (as defined), including financial assets and financial liabilities (collectively, as defined), and the measurements of those instruments as well as disclosures related to the fair value of non-financial assets and liabilities. Such disclosures about the financial instruments, assets, and liabilities would include: (1) the fair value of the required items together with their carrying amounts (as appropriate); (2) for items for which it is not practicable to estimate fair value, disclosure would include: (a) information pertinent to estimating fair value (including, carrying amount, effective interest rate, and maturity, and (b) the reasons why it is not practicable to estimate fair value; (3) significant concentrations of credit risk including: (a) information about the activity, region, or economic characteristics identifying a concentration, (b) the maximum amount of loss the entity is exposed to based on the gross fair value of the related item, (c) policy for requiring collateral or other security and information as to accessing such collateral or security, and (d) the nature and brief description of such collateral or security; (4) quantitative information about market risks and how such risks are managed; (5) for items measured on both a recurring and nonrecurring basis information regarding the inputs used to develop the fair value measurement; and (6) for items presented in the financial statement for which fair value measurement is elected: (a) information necessary to understand the reasons for the election, (b) discussion of the effect of fair value changes on earnings, (c) a description of [similar groups] items for which the election is made and the relation thereof to the balance sheet, the aggregate carrying value of items included in the balance sheet that are not eligible for the election; (7) all other required (as defined) and desired information.",
        "label": "Fair Value Disclosures [Text Block]"
       }
      }
     },
     "localname": "FairValueDisclosuresTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FairValueInputsLevel1Member": {
     "auth_ref": [
      "r243",
      "r257",
      "r258",
      "r263",
      "r264",
      "r372",
      "r398"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Quoted prices in active markets for identical assets or liabilities that the reporting entity can access at the measurement date.",
        "label": "Fair Value, Inputs, Level 1 [Member]"
       }
      }
     },
     "localname": "FairValueInputsLevel1Member",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueInputsLevel2Member": {
     "auth_ref": [
      "r243",
      "r245",
      "r246",
      "r257",
      "r258",
      "r263",
      "r264",
      "r372",
      "r399"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Inputs other than quoted prices included within level 1 that are observable for an asset or liability, either directly or indirectly, including, but not limited to, quoted prices for similar assets or liabilities in active markets, or quoted prices for identical or similar assets or liabilities in inactive markets.",
        "label": "Fair Value, Inputs, Level 2 [Member]"
       }
      }
     },
     "localname": "FairValueInputsLevel2Member",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueInputsLevel3Member": {
     "auth_ref": [
      "r243",
      "r245",
      "r246",
      "r257",
      "r258",
      "r259",
      "r260",
      "r261",
      "r262",
      "r263",
      "r264",
      "r372",
      "r400"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing.",
        "label": "Fair Value, Inputs, Level 3 [Member]"
       }
      }
     },
     "localname": "FairValueInputsLevel3Member",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueMeasurementFrequencyDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Measurement frequency.",
        "label": "Measurement Frequency [Domain]"
       }
      }
     },
     "localname": "FairValueMeasurementFrequencyDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueMeasurementsFairValueHierarchyDomain": {
     "auth_ref": [
      "r243",
      "r245",
      "r246",
      "r257",
      "r258",
      "r259",
      "r260",
      "r261",
      "r262",
      "r263",
      "r264",
      "r398",
      "r399",
      "r400"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Categories used to prioritize the inputs to valuation techniques to measure fair value.",
        "label": "Fair Value Hierarchy and NAV [Domain]"
       }
      }
     },
     "localname": "FairValueMeasurementsFairValueHierarchyDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueMeasurementsRecurringMember": {
     "auth_ref": [
      "r376",
      "r378"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Frequent fair value measurement. Includes, but is not limited to, fair value adjustment for impairment of asset, liability or equity, frequently measured at fair value.",
        "label": "Fair Value, Recurring [Member]"
       }
      }
     },
     "localname": "FairValueMeasurementsRecurringMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FinanceLeaseLiabilityCurrent": {
     "auth_ref": [
      "r388"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 6.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from finance lease, classified as current.",
        "label": "Current finance lease liabilities"
       }
      }
     },
     "localname": "FinanceLeaseLiabilityCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseLiabilityNoncurrent": {
     "auth_ref": [
      "r388"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from finance lease, classified as noncurrent.",
        "label": "Long-term finance lease liabilities"
       }
      }
     },
     "localname": "FinanceLeaseLiabilityNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeasePrincipalPayments": {
     "auth_ref": [
      "r389",
      "r390"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 3.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow for principal payment on finance lease.",
        "label": "us-gaap_FinanceLeasePrincipalPayments",
        "negatedLabel": "Principal repayments of finance lease obligations"
       }
      }
     },
     "localname": "FinanceLeasePrincipalPayments",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinanceLeaseRightOfUseAsset": {
     "auth_ref": [
      "r387"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 6.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after accumulated amortization, of right-of-use asset from finance lease.",
        "label": "Finance lease assets"
       }
      }
     },
     "localname": "FinanceLeaseRightOfUseAsset",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FinancialInstrumentAxis": {
     "auth_ref": [
      "r177",
      "r181",
      "r184",
      "r185",
      "r186",
      "r193",
      "r194",
      "r195",
      "r196",
      "r197",
      "r199",
      "r200",
      "r201",
      "r202",
      "r244",
      "r249",
      "r367",
      "r395",
      "r396",
      "r397",
      "r398",
      "r399",
      "r400",
      "r401",
      "r402",
      "r403",
      "r404",
      "r405",
      "r406",
      "r407",
      "r408",
      "r409",
      "r410",
      "r411",
      "r412",
      "r413",
      "r414",
      "r415",
      "r416",
      "r417",
      "r418",
      "r419",
      "r420",
      "r421",
      "r422",
      "r423",
      "r424",
      "r487",
      "r488",
      "r489",
      "r490",
      "r491",
      "r492",
      "r493"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of financial instrument.",
        "label": "Financial Instrument [Axis]"
       }
      }
     },
     "localname": "FinancialInstrumentAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetUsefulLife": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Useful life of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Useful Life (Year)"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetUsefulLife",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization": {
     "auth_ref": [
      "r217"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accumulated amount of amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.",
        "label": "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization",
        "negatedLabel": "Accumulated Amortization"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAccumulatedAmortization",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths": {
     "auth_ref": [
      "r219"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
       "order": 5.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
        "terseLabel": "2022"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
       "order": 3.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in remainder of current fiscal year.",
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear",
        "terseLabel": "Remaining 2021"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour": {
     "auth_ref": [
      "r219"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
       "order": 0.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour",
        "terseLabel": "2025"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFour",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree": {
     "auth_ref": [
      "r219"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
       "order": 1.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree",
        "terseLabel": "2024"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearThree",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo": {
     "auth_ref": [
      "r219"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
       "order": 4.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo",
        "terseLabel": "2023"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis": {
     "auth_ref": [
      "r213",
      "r215",
      "r217",
      "r220",
      "r428",
      "r429"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by major type or class of finite-lived intangible assets.",
        "label": "Finite-Lived Intangible Assets by Major Class [Axis]"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsByMajorClassAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of foreign currency translation gain (loss) which increases (decreases) assets, excluding financial assets and goodwill, lacking physical substance with a finite life.",
        "label": "us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss",
        "terseLabel": "Finite Lived Intangible Assets, Foreign Currency Translation Gain (Loss)"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsGross": {
     "auth_ref": [
      "r217",
      "r429"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.",
        "label": "Gross"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsGross",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain": {
     "auth_ref": [
      "r213",
      "r216"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The major class of finite-lived intangible asset (for example, patents, trademarks, copyrights, etc.) A major class is composed of intangible assets that can be grouped together because they are similar, either by their nature or by their use in the operations of a company.",
        "label": "Finite-Lived Intangible Assets, Major Class Name [Domain]"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsMajorClassNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsNet": {
     "auth_ref": [
      "r217",
      "r428"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.",
        "label": "Net",
        "totalLabel": "Total estimated amortization expense"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1": {
     "auth_ref": [
      "r428"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Remaining amortization period of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Weighted average useful life remaining (Year)"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_FinitelivedIntangibleAssetsAcquired1": {
     "auth_ref": [
      "r214"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in assets, excluding financial assets, lacking physical substance with a definite life, from an acquisition.",
        "label": "us-gaap_FinitelivedIntangibleAssetsAcquired1",
        "terseLabel": "Finite-lived Intangible Assets Acquired"
       }
      }
     },
     "localname": "FinitelivedIntangibleAssetsAcquired1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GeneralAndAdministrativeExpense": {
     "auth_ref": [
      "r68"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate total of expenses of managing and administering the affairs of an entity, including affiliates of the reporting entity, which are not directly or indirectly associated with the manufacture, sale or creation of a product or product line.",
        "label": "General and administrative"
       }
      }
     },
     "localname": "GeneralAndAdministrativeExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_Goodwill": {
     "auth_ref": [
      "r205",
      "r206",
      "r393",
      "r431"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 2.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      },
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 1.0,
       "parentTag": "prlb_BusinessCombinationRecognizedIdentifiableAssetsAcquiredIncludingGoodwillAndLiabilitiesAssumedAssetsTotal",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.",
        "label": "Goodwill",
        "periodEndLabel": "Goodwill",
        "periodStartLabel": "Goodwill",
        "terseLabel": "Goodwill"
       }
      }
     },
     "localname": "Goodwill",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillAcquiredDuringPeriod": {
     "auth_ref": [
      "r207"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized resulting from a business combination.",
        "label": "Goodwill acquired during the period",
        "terseLabel": "Goodwill, Acquired During Period"
       }
      }
     },
     "localname": "GoodwillAcquiredDuringPeriod",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillAndIntangibleAssetsDisclosureTextBlock": {
     "auth_ref": [
      "r221"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for goodwill and intangible assets.",
        "label": "Goodwill and Intangible Assets Disclosure [Text Block]"
       }
      }
     },
     "localname": "GoodwillAndIntangibleAssetsDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_GoodwillForeignCurrencyTranslationGainLoss": {
     "auth_ref": [
      "r208"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of foreign currency translation gain (loss) which increases (decreases) an asset representing future economic benefits from other assets acquired in a business combination that are not individually identified and separately recognized.",
        "label": "us-gaap_GoodwillForeignCurrencyTranslationGainLoss",
        "terseLabel": "Foreign currency translation adjustments"
       }
      }
     },
     "localname": "GoodwillForeignCurrencyTranslationGainLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillPurchaseAccountingAdjustments": {
     "auth_ref": [
      "r209",
      "r335"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) from adjustments after acquisition date under purchase accounting of an asset representing the future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.",
        "label": "us-gaap_GoodwillPurchaseAccountingAdjustments",
        "terseLabel": "Goodwill, Purchase Accounting Adjustments"
       }
      }
     },
     "localname": "GoodwillPurchaseAccountingAdjustments",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GrossProfit": {
     "auth_ref": [
      "r66",
      "r88",
      "r138",
      "r143",
      "r146",
      "r149",
      "r152",
      "r188",
      "r227",
      "r228",
      "r229",
      "r232",
      "r233",
      "r234",
      "r236",
      "r238",
      "r240",
      "r241",
      "r379"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity.",
        "label": "us-gaap_GrossProfit",
        "totalLabel": "Gross profit"
       }
      }
     },
     "localname": "GrossProfit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecurities": {
     "auth_ref": [
      "r165",
      "r173",
      "r192",
      "r195"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, before allowance for credit loss, of investment in debt security measured at amortized cost (held-to-maturity).",
        "label": "Amortized Cost"
       }
      }
     },
     "localname": "HeldToMaturitySecurities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain": {
     "auth_ref": [
      "r175",
      "r179"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of accumulated unrecognized gain on investment in debt security measured at amortized cost (held-to-maturity).",
        "label": "Unrealized Gains"
       }
      }
     },
     "localname": "HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingGain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss": {
     "auth_ref": [
      "r176",
      "r180"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of accumulated unrealized loss on investment in debt security measured at amortized cost (held-to-maturity).",
        "label": "us-gaap_HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss",
        "negatedLabel": "Unrealized Losses"
       }
      }
     },
     "localname": "HeldToMaturitySecuritiesAccumulatedUnrecognizedHoldingLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_HeldToMaturitySecuritiesFairValue": {
     "auth_ref": [
      "r174",
      "r178",
      "r435"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value of investment in debt security measured at amortized cost (held-to-maturity).",
        "label": "Fair Value"
       }
      }
     },
     "localname": "HeldToMaturitySecuritiesFairValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest": {
     "auth_ref": [
      "r62",
      "r138",
      "r143",
      "r146",
      "r149",
      "r152",
      "r430",
      "r437",
      "r442",
      "r455"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest.",
        "label": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
        "totalLabel": "Income before income taxes"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeStatementAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Statement [Abstract]"
       }
      }
     },
     "localname": "IncomeStatementAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeTaxDisclosureTextBlock": {
     "auth_ref": [
      "r90",
      "r317",
      "r319",
      "r320",
      "r324",
      "r330",
      "r332",
      "r333",
      "r334"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for income taxes. Disclosures may include net deferred tax liability or asset recognized in an enterprise's statement of financial position, net change during the year in the total valuation allowance, approximate tax effect of each type of temporary difference and carryforward that gives rise to a significant portion of deferred tax liabilities and deferred tax assets, utilization of a tax carryback, and tax uncertainties information.",
        "label": "Income Tax Disclosure [Text Block]"
       }
      }
     },
     "localname": "IncomeTaxDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r91",
      "r106",
      "r107",
      "r136",
      "r315",
      "r325",
      "r331",
      "r456"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.",
        "label": "Provision for income taxes",
        "terseLabel": "Income Tax Expense (Benefit), Total"
       }
      }
     },
     "localname": "IncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxesReceivable": {
     "auth_ref": [
      "r39",
      "r436",
      "r451"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 4.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying amount due within one year of the balance sheet date (or one operating cycle, if longer) from tax authorities as of the balance sheet date representing refunds of overpayments or recoveries based on agreed-upon resolutions of disputes.",
        "label": "Income taxes receivable"
       }
      }
     },
     "localname": "IncomeTaxesReceivable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsPayable": {
     "auth_ref": [
      "r82"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 3.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in the aggregate amount of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business.",
        "label": "Accounts payable"
       }
      }
     },
     "localname": "IncreaseDecreaseInAccountsPayable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsReceivable": {
     "auth_ref": [
      "r82"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 6.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services.",
        "label": "us-gaap_IncreaseDecreaseInAccountsReceivable",
        "negatedLabel": "Accounts receivable"
       }
      }
     },
     "localname": "IncreaseDecreaseInAccountsReceivable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable": {
     "auth_ref": [
      "r82"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 5.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The increase (decrease) during the period in the amount due for taxes based on the reporting entity's earnings or attributable to the entity's income earning process (business presence) within a given jurisdiction.",
        "label": "Income taxes"
       }
      }
     },
     "localname": "IncreaseDecreaseInAccruedIncomeTaxesPayable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInInventories": {
     "auth_ref": [
      "r82"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 7.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in the aggregate value of all inventory held by the reporting entity, associated with underlying transactions that are classified as operating activities.",
        "label": "us-gaap_IncreaseDecreaseInInventories",
        "negatedLabel": "Inventories"
       }
      }
     },
     "localname": "IncreaseDecreaseInInventories",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInOperatingCapitalAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Changes in operating assets and liabilities:"
       }
      }
     },
     "localname": "IncreaseDecreaseInOperatingCapitalAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncreaseDecreaseInOtherOperatingLiabilities": {
     "auth_ref": [
      "r82"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 2.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in operating liabilities classified as other.",
        "label": "us-gaap_IncreaseDecreaseInOtherOperatingLiabilities",
        "terseLabel": "Accrued liabilities and other"
       }
      }
     },
     "localname": "IncreaseDecreaseInOtherOperatingLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets": {
     "auth_ref": [
      "r82"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 4.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in prepaid expenses, and assets classified as other.",
        "label": "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets",
        "negatedLabel": "Prepaid expenses and other"
       }
      }
     },
     "localname": "IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements": {
     "auth_ref": [
      "r112",
      "r113",
      "r114",
      "r118"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details": {
       "order": 0.0,
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of share based payment arrangements using the treasury stock method.",
        "label": "Employee stock options and other (in shares)"
       }
      }
     },
     "localname": "IncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_InventoryDisclosureTextBlock": {
     "auth_ref": [
      "r204"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for inventory. Includes, but is not limited to, the basis of stating inventory, the method of determining inventory cost, the classes of inventory, and the nature of the cost elements included in inventory.",
        "label": "Inventory Disclosure [Text Block]"
       }
      }
     },
     "localname": "InventoryDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InventoryGross": {
     "auth_ref": [
      "r40"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details": {
       "order": 0.0,
       "parentTag": "us-gaap_InventoryNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Gross amount, as of the balance sheet date, of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process.",
        "label": "Total inventory"
       }
      }
     },
     "localname": "InventoryGross",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryNet": {
     "auth_ref": [
      "r5",
      "r40",
      "r393"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      },
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.",
        "label": "Inventory",
        "totalLabel": "Inventory, net of allowance"
       }
      }
     },
     "localname": "InventoryNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryValuationReserves": {
     "auth_ref": [
      "r40",
      "r203"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details": {
       "order": 1.0,
       "parentTag": "us-gaap_InventoryNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of valuation reserve for inventory.",
        "label": "us-gaap_InventoryValuationReserves",
        "negatedLabel": "Allowance for obsolescence"
       }
      }
     },
     "localname": "InventoryValuationReserves",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InvestmentTextBlock": {
     "auth_ref": [
      "r183",
      "r187",
      "r189",
      "r190"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for investment.",
        "label": "Investment [Text Block]"
       }
      }
     },
     "localname": "InvestmentTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of maturities of an entity's investments as well as any other information pertinent to the investments.",
        "label": "Investments Classified by Contractual Maturity Date [Table Text Block]"
       }
      }
     },
     "localname": "InvestmentsClassifiedByContractualMaturityDateTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_Liabilities": {
     "auth_ref": [
      "r33",
      "r88",
      "r145",
      "r188",
      "r227",
      "r228",
      "r229",
      "r232",
      "r233",
      "r234",
      "r236",
      "r238",
      "r240",
      "r241",
      "r361",
      "r364",
      "r365",
      "r379",
      "r391",
      "r392"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all liabilities that are recognized. Liabilities are probable future sacrifices of economic benefits arising from present obligations of an entity to transfer assets or provide services to other entities in the future.",
        "label": "us-gaap_Liabilities",
        "totalLabel": "Total liabilities"
       }
      }
     },
     "localname": "Liabilities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesAndStockholdersEquity": {
     "auth_ref": [
      "r22",
      "r88",
      "r188",
      "r379",
      "r393",
      "r434",
      "r449"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any.",
        "label": "us-gaap_LiabilitiesAndStockholdersEquity",
        "totalLabel": "Total liabilities and shareholders' equity"
       }
      }
     },
     "localname": "LiabilitiesAndStockholdersEquity",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesCurrent": {
     "auth_ref": [
      "r36",
      "r88",
      "r188",
      "r227",
      "r228",
      "r229",
      "r232",
      "r233",
      "r234",
      "r236",
      "r238",
      "r240",
      "r241",
      "r361",
      "r364",
      "r365",
      "r379",
      "r391",
      "r392",
      "r393"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 4.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer.",
        "label": "us-gaap_LiabilitiesCurrent",
        "totalLabel": "Total current liabilities"
       }
      }
     },
     "localname": "LiabilitiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesCurrentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current liabilities"
       }
      }
     },
     "localname": "LiabilitiesCurrentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LiabilitiesFairValueDisclosure": {
     "auth_ref": [
      "r371"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value of financial and nonfinancial obligations.",
        "label": "us-gaap_LiabilitiesFairValueDisclosure",
        "totalLabel": "Total"
       }
      }
     },
     "localname": "LiabilitiesFairValueDisclosure",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LongLivedAssetsByGeographicAreasTableTextBlock": {
     "auth_ref": [
      "r158"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of long-lived assets, excluding financial instruments, long-term customer relationships of a financial institution, mortgage rights, deferred policy acquisition costs, and deferred tax assets, by geographic areas located in the entity's country of domicile and foreign countries in which the entity holds assets.",
        "label": "Long-lived Assets by Geographic Areas [Table Text Block]"
       }
      }
     },
     "localname": "LongLivedAssetsByGeographicAreasTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_MarketableSecuritiesCurrent": {
     "auth_ref": [
      "r7",
      "r34"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 3.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of investment in marketable security, classified as current.",
        "label": "Short-term marketable securities"
       }
      }
     },
     "localname": "MarketableSecuritiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_MarketableSecuritiesNoncurrent": {
     "auth_ref": [
      "r30"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of investment in marketable security, classified as noncurrent.",
        "label": "Long-term marketable securities"
       }
      }
     },
     "localname": "MarketableSecuritiesNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_MarketingRelatedIntangibleAssetsMember": {
     "auth_ref": [
      "r341"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Marketing-related asset, including, but not limited to, internet domain name, newspaper mast head, and trademark.",
        "label": "Marketing-Related Intangible Assets [Member]"
       }
      }
     },
     "localname": "MarketingRelatedIntangibleAssetsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_MoneyMarketFundsMember": {
     "auth_ref": [
      "r257"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fund that invests in short-term money-market instruments, for example, but not limited to, commercial paper, banker's acceptances, repurchase agreements, government securities, certificates of deposit, and other highly liquid securities.",
        "label": "Money Market Funds [Member]"
       }
      }
     },
     "localname": "MoneyMarketFundsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivities": {
     "auth_ref": [
      "r80"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 2.0,
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash inflow (outflow) from financing activities, including discontinued operations. Financing activity cash flows include obtaining resources from owners and providing them with a return on, and a return of, their investment; borrowing money and repaying amounts borrowed, or settling the obligation; and obtaining and paying for other resources obtained from creditors on long-term credit.",
        "label": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
        "totalLabel": "Net cash used in financing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInFinancingActivities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Financing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInFinancingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivities": {
     "auth_ref": [
      "r80"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash inflow (outflow) from investing activities, including discontinued operations. Investing activity cash flows include making and collecting loans and acquiring and disposing of debt or equity instruments and property, plant, and equipment and other productive assets.",
        "label": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
        "totalLabel": "Net cash used in investing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInInvestingActivities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Investing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInInvestingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivities": {
     "auth_ref": [
      "r80",
      "r81",
      "r84"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash inflow (outflow) from operating activities, including discontinued operations. Operating activity cash flows include transactions, adjustments, and changes in value not defined as investing or financing activities.",
        "label": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
        "totalLabel": "Net cash provided by operating activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInOperatingActivities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInOperatingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetIncomeLoss": {
     "auth_ref": [
      "r2",
      "r52",
      "r55",
      "r60",
      "r63",
      "r84",
      "r88",
      "r98",
      "r100",
      "r101",
      "r102",
      "r103",
      "r106",
      "r107",
      "r115",
      "r138",
      "r143",
      "r146",
      "r149",
      "r152",
      "r188",
      "r227",
      "r228",
      "r229",
      "r232",
      "r233",
      "r234",
      "r236",
      "r238",
      "r240",
      "r241",
      "r370",
      "r379",
      "r438",
      "r452"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      },
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.",
        "label": "Net income",
        "totalLabel": "Net income"
       }
      }
     },
     "localname": "NetIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NoncompeteAgreementsMember": {
     "auth_ref": [
      "r343"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Agreement in which one party agrees not to pursue a similar trade in competition with another party.",
        "label": "Noncompete Agreements [Member]"
       }
      }
     },
     "localname": "NoncompeteAgreementsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OciBeforeReclassificationsNetOfTaxAttributableToParent": {
     "auth_ref": [
      "r51",
      "r61"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details": {
       "order": 1.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after tax, before reclassification adjustments, of other comprehensive income (loss), attributable to parent.",
        "label": "Other comprehensive income (loss) before reclassifications"
       }
      }
     },
     "localname": "OciBeforeReclassificationsNetOfTaxAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingExpenses": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Generally recurring costs associated with normal operations except for the portion of these expenses which can be clearly related to production and included in cost of sales or services. Includes selling, general and administrative expense.",
        "label": "us-gaap_OperatingExpenses",
        "totalLabel": "Total operating expenses"
       }
      }
     },
     "localname": "OperatingExpenses",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingExpensesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Operating expenses"
       }
      }
     },
     "localname": "OperatingExpensesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_OperatingIncomeLoss": {
     "auth_ref": [
      "r138",
      "r143",
      "r146",
      "r149",
      "r152"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The net result for the period of deducting operating expenses from operating revenues.",
        "label": "Income from operations",
        "totalLabel": "Income from operations"
       }
      }
     },
     "localname": "OperatingIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityCurrent": {
     "auth_ref": [
      "r388"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 5.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.",
        "label": "Current operating lease liabilities"
       }
      }
     },
     "localname": "OperatingLeaseLiabilityCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityNoncurrent": {
     "auth_ref": [
      "r388"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 3.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.",
        "label": "Long-term operating lease liabilities"
       }
      }
     },
     "localname": "OperatingLeaseLiabilityNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseRightOfUseAsset": {
     "auth_ref": [
      "r387"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's right to use underlying asset under operating lease.",
        "label": "Operating lease assets"
       }
      }
     },
     "localname": "OperatingLeaseRightOfUseAsset",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingSegmentsMember": {
     "auth_ref": [
      "r142",
      "r143",
      "r144",
      "r145",
      "r146",
      "r152"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Identifies components of an entity that engage in business activities from which they may earn revenue and incur expenses, including transactions with other components of the same entity.",
        "label": "Operating Segments [Member]"
       }
      }
     },
     "localname": "OperatingSegmentsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock": {
     "auth_ref": [
      "r3",
      "r366"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for organization, consolidation and basis of presentation of financial statements disclosure.",
        "label": "Organization, Consolidation and Presentation of Financial Statements Disclosure [Text Block]"
       }
      }
     },
     "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-1-basis-of-presentation"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_OtherAssetsNoncurrent": {
     "auth_ref": [
      "r31"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 7.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of noncurrent assets classified as other.",
        "label": "Other long-term assets"
       }
      }
     },
     "localname": "OtherAssetsNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax": {
     "auth_ref": [
      "r43"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature.",
        "label": "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax",
        "terseLabel": "Foreign currency translation adjustment"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other comprehensive loss"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossNetOfTaxAttributableToParentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r53",
      "r56",
      "r358",
      "r359",
      "r362"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after tax of other comprehensive income (loss) attributable to parent entity.",
        "label": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
        "totalLabel": "Net current-period other comprehensive income (loss)"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax": {
     "auth_ref": [
      "r45",
      "r49"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after tax and before adjustment, of unrealized holding gain (loss) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale). Excludes unrealized gain (loss) on investment in debt security measured at amortized cost (held-to-maturity) from transfer to available-for-sale.",
        "label": "Net unrealized gains (losses) on investments in securities"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherIntangibleAssetsNet": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 3.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after accumulated amortization of finite-lived and indefinite-lived intangible assets classified as other.",
        "label": "Other intangible assets, net"
       }
      }
     },
     "localname": "OtherIntangibleAssetsNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherLiabilitiesNoncurrent": {
     "auth_ref": [
      "r37"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 5.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer.",
        "label": "Other long-term liabilities"
       }
      }
     },
     "localname": "OtherLiabilitiesNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherNoncashIncomeExpense": {
     "auth_ref": [
      "r84"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 8.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of income (expense) included in net income that results in no cash inflow (outflow), classified as other.",
        "label": "us-gaap_OtherNoncashIncomeExpense",
        "negatedLabel": "Other"
       }
      }
     },
     "localname": "OtherNoncashIncomeExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherNonoperatingIncomeExpense": {
     "auth_ref": [
      "r69"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of income (expense) related to nonoperating activities, classified as other.",
        "label": "Other income (loss), net"
       }
      }
     },
     "localname": "OtherNonoperatingIncomeExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsForRepurchaseOfCommonStock": {
     "auth_ref": [
      "r79"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 2.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash outflow to reacquire common stock during the period.",
        "label": "us-gaap_PaymentsForRepurchaseOfCommonStock",
        "negatedLabel": "Repurchases of common stock"
       }
      }
     },
     "localname": "PaymentsForRepurchaseOfCommonStock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation": {
     "auth_ref": [
      "r79"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow to satisfy grantee's tax withholding obligation for award under share-based payment arrangement.",
        "label": "us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation",
        "negatedLabel": "Purchases of shares withheld for tax obligations"
       }
      }
     },
     "localname": "PaymentsRelatedToTaxWithholdingForShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt": {
     "auth_ref": [
      "r71",
      "r74",
      "r168"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 5.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow to acquire investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).",
        "label": "us-gaap_PaymentsToAcquireAvailableForSaleSecuritiesDebt",
        "negatedLabel": "Purchases of marketable securities"
       }
      }
     },
     "localname": "PaymentsToAcquireAvailableForSaleSecuritiesDebt",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireBusinessesGross": {
     "auth_ref": [
      "r75",
      "r352"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 0.0,
       "parentTag": "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash outflow associated with the acquisition of business during the period. The cash portion only of the acquisition price.",
        "label": "us-gaap_PaymentsToAcquireBusinessesGross",
        "terseLabel": "Payments to Acquire Businesses, Gross"
       }
      }
     },
     "localname": "PaymentsToAcquireBusinessesGross",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired": {
     "auth_ref": [
      "r75"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      },
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details": {
       "order": 0.0,
       "parentTag": "us-gaap_BusinessCombinationConsiderationTransferred1",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase.",
        "label": "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired",
        "negatedLabel": "Cash used for acquisitions, net of cash acquired",
        "terseLabel": "Payments to Acquire Businesses, Net of Cash Acquired, Total",
        "totalLabel": "Net cash consideration"
       }
      }
     },
     "localname": "PaymentsToAcquireBusinessesNetOfCashAcquired",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireOtherInvestments": {
     "auth_ref": [
      "r77"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 4.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow to acquire investments classified as other.",
        "label": "us-gaap_PaymentsToAcquireOtherInvestments",
        "negatedLabel": "Purchases of other assets and investments"
       }
      }
     },
     "localname": "PaymentsToAcquireOtherInvestments",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": {
     "auth_ref": [
      "r76"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets.",
        "label": "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment",
        "negatedLabel": "Purchases of property, equipment and other capital assets"
       }
      }
     },
     "localname": "PaymentsToAcquirePropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PerformanceSharesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-based payment arrangement awarded for meeting performance target.",
        "label": "Performance Shares [Member]"
       }
      }
     },
     "localname": "PerformanceSharesMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PlanNameAxis": {
     "auth_ref": [
      "r273",
      "r300"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by plan name for share-based payment arrangement.",
        "label": "Plan Name [Axis]"
       }
      }
     },
     "localname": "PlanNameAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PlanNameDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Plan name for share-based payment arrangement.",
        "label": "Plan Name [Domain]"
       }
      }
     },
     "localname": "PlanNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PreferredStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r14",
      "r247"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer.",
        "label": "Preferred stock, par value (in dollars per share)"
       }
      }
     },
     "localname": "PreferredStockParOrStatedValuePerShare",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_PreferredStockSharesAuthorized": {
     "auth_ref": [
      "r14"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The maximum number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) permitted to be issued by an entity's charter and bylaws.",
        "label": "Preferred stock, shares authorized (in shares)"
       }
      }
     },
     "localname": "PreferredStockSharesAuthorized",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockSharesIssued": {
     "auth_ref": [
      "r14",
      "r247"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Total number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) issued to shareholders (includes related preferred shares that were issued, repurchased, and remain in the treasury). May be all or portion of the number of preferred shares authorized. Excludes preferred shares that are classified as debt.",
        "label": "Preferred stock, shares issued (in shares)"
       }
      }
     },
     "localname": "PreferredStockSharesIssued",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockValue": {
     "auth_ref": [
      "r14",
      "r393"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 3.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Aggregate par or stated value of issued nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable preferred shares, par value and other disclosure concepts are in another section within stockholders' equity.",
        "label": "Preferred stock, $0.001 par value, authorized 10,000,000 shares; issued and outstanding 0 shares as of each of June 30, 2021 and December 31, 2020"
       }
      }
     },
     "localname": "PreferredStockValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PrepaidExpenseAndOtherAssetsCurrent": {
     "auth_ref": [
      "r8",
      "r27",
      "r28"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 5.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer.",
        "label": "Prepaid expenses and other current assets"
       }
      }
     },
     "localname": "PrepaidExpenseAndOtherAssetsCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions": {
     "auth_ref": [
      "r78",
      "r301"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash inflow from issuance of shares under share-based payment arrangement. Includes, but is not limited to, option exercised.",
        "label": "Proceeds from exercises of stock options"
       }
      }
     },
     "localname": "ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities": {
     "auth_ref": [
      "r71",
      "r72",
      "r168"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 3.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash inflow from maturity, prepayment and call of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).",
        "label": "Proceeds from maturities of marketable securities"
       }
      }
     },
     "localname": "ProceedsFromMaturitiesPrepaymentsAndCallsOfAvailableForSaleSecurities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromSaleOfHeldToMaturitySecurities": {
     "auth_ref": [
      "r72",
      "r168"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 2.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash inflow associated with the sale of securities that had been designated as held-to-maturity. Excludes proceeds from maturities, prepayments and calls by the issuer.",
        "label": "Proceeds from sales of marketable securities"
       }
      }
     },
     "localname": "ProceedsFromSaleOfHeldToMaturitySecurities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentNet": {
     "auth_ref": [
      "r11",
      "r12",
      "r222",
      "r393",
      "r444",
      "r450"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 5.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.",
        "label": "Property and equipment, net",
        "terseLabel": "Long-lived assets"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent": {
     "auth_ref": [
      "r51",
      "r61"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details": {
       "order": 0.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after tax of reclassification adjustments of other comprehensive income (loss) attributable to parent.",
        "label": "us-gaap_ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent",
        "negatedLabel": "Amounts reclassified from accumulated other comprehensive loss"
       }
      }
     },
     "localname": "ReclassificationFromAociCurrentPeriodNetOfTaxAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ResearchAndDevelopmentExpense": {
     "auth_ref": [
      "r311",
      "r426",
      "r481"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited": {
       "order": 2.0,
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate costs incurred (1) in a planned search or critical investigation aimed at discovery of new knowledge with the hope that such knowledge will be useful in developing a new product or service, a new process or technique, or in bringing about a significant improvement to an existing product or process; or (2) to translate research findings or other knowledge into a plan or design for a new product or process or for a significant improvement to an existing product or process whether intended for sale or the entity's use, during the reporting period charged to research and development projects, including the costs of developing computer software up to the point in time of achieving technological feasibility, and costs allocated in accounting for a business combination to in-process projects deemed to have no alternative future use.",
        "label": "Research and development"
       }
      }
     },
     "localname": "ResearchAndDevelopmentExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Type of cash and cash equivalent. Cash is currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "Cash and Cash Equivalents [Domain]"
       }
      }
     },
     "localname": "RestrictedCashAndCashEquivalentsCashAndCashEquivalentsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RestrictedStockMember": {
     "auth_ref": [
      "r119"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Stock including a provision that prohibits sale or substantive sale of an equity instrument for a specified period of time or until specified performance conditions are met.",
        "label": "Restricted Stock [Member]"
       }
      }
     },
     "localname": "RestrictedStockMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RetainedEarningsAccumulatedDeficit": {
     "auth_ref": [
      "r18",
      "r251",
      "r305",
      "r393",
      "r448",
      "r465",
      "r467"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cumulative amount of the reporting entity's undistributed earnings or deficit.",
        "label": "Retained earnings"
       }
      }
     },
     "localname": "RetainedEarningsAccumulatedDeficit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RetainedEarningsMember": {
     "auth_ref": [
      "r0",
      "r95",
      "r96",
      "r97",
      "r99",
      "r105",
      "r107",
      "r191",
      "r302",
      "r303",
      "r304",
      "r322",
      "r323",
      "r368",
      "r462",
      "r464"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cumulative amount of the reporting entity's undistributed earnings or deficit.",
        "label": "Retained Earnings [Member]"
       }
      }
     },
     "localname": "RetainedEarningsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax": {
     "auth_ref": [
      "r129",
      "r130",
      "r142",
      "r147",
      "r148",
      "r154",
      "r155",
      "r160",
      "r252",
      "r253",
      "r427"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited": {
       "order": 1.0,
       "parentTag": "us-gaap_GrossProfit",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.",
        "label": "Revenue"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerIncludingAssessedTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock": {
     "auth_ref": [
      "r157"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of revenue from external customers by geographic areas attributed to the entity's country of domicile and to foreign countries from which the entity derives revenue.",
        "label": "Revenue from External Customers by Geographic Areas [Table Text Block]"
       }
      }
     },
     "localname": "RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenuesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statements of Operations:"
       }
      }
     },
     "localname": "RevenuesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfComprehensiveIncomeLossTableTextBlock": {
     "auth_ref": [
      "r42"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of components of comprehensive income (loss). Includes, but is not limited to, foreign currency translation adjustments, foreign currency transactions  designated as economic hedges of a net investment in foreign entity, gain (loss) and prior service cost (credit) for pension plans and other postretirement benefit plans.",
        "label": "Comprehensive Income (Loss) [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfComprehensiveIncomeLossTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock": {
     "auth_ref": [
      "r118"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations.",
        "label": "Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock": {
     "auth_ref": [
      "r213",
      "r216"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of assets, excluding financial assets and goodwill, lacking physical substance with a finite life, by either major class or business segment.",
        "label": "Schedule of Finite-Lived Intangible Assets [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfGoodwillTextBlock": {
     "auth_ref": [
      "r210",
      "r211"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of goodwill by reportable segment and in total which includes a rollforward schedule.",
        "label": "Schedule of Goodwill [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfGoodwillTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfInventoryCurrentTableTextBlock": {
     "auth_ref": [
      "r10",
      "r24",
      "r25",
      "r26"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the carrying amount as of the balance sheet date of merchandise, goods, commodities, or supplies held for future sale or to be used in manufacturing, servicing or production process.",
        "label": "Schedule of Inventory, Current [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfInventoryCurrentTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock": {
     "auth_ref": [
      "r283"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the changes in outstanding nonvested performance-based units.",
        "label": "Schedule of Nonvested Performance-based Units Activity [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfNonvestedPerformanceBasedUnitsActivityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock": {
     "auth_ref": [
      "r339"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the amounts recognized as of the acquisition date for each major class of assets acquired and liabilities assumed. May include but not limited to the following: (a) acquired receivables; (b) contingencies recognized at the acquisition date; and (c) the fair value of noncontrolling interests in the acquiree.",
        "label": "Schedule of Recognized Identified Assets Acquired and Liabilities Assumed [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock": {
     "auth_ref": [
      "r277",
      "r289",
      "r291"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value.",
        "label": "Share-based Payment Arrangement, Option, Activity [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock": {
     "auth_ref": [
      "r292"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the significant assumptions used during the year to estimate the fair value of employee stock purchase plans, including, but not limited to: (a) expected term, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions.",
        "label": "Schedule of Share-based Payment Award, Employee Stock Purchase Plan, Valuation Assumptions [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfShareBasedPaymentAwardEmployeeStockPurchasePlanValuationAssumptionsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock": {
     "auth_ref": [
      "r292"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the significant assumptions used during the year to estimate the fair value of stock options, including, but not limited to: (a) expected term of share options and similar instruments, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions.",
        "label": "Schedule of Share-based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of the number and weighted-average grant date fair value for restricted stock and restricted stock units that were outstanding at the beginning and end of the year, and the number of restricted stock and restricted stock units that were granted, vested, or forfeited during the year.",
        "label": "Share-based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock": {
     "auth_ref": [
      "r216"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the amount of amortization expense expected to be recorded in succeeding fiscal years for finite-lived intangible assets.",
        "label": "Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]"
       }
      }
     },
     "localname": "ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SegmentDomain": {
     "auth_ref": [
      "r126",
      "r129",
      "r130",
      "r131",
      "r132",
      "r133",
      "r134",
      "r135",
      "r136",
      "r137",
      "r138",
      "r139",
      "r140",
      "r142",
      "r143",
      "r144",
      "r145",
      "r146",
      "r147",
      "r148",
      "r149",
      "r150",
      "r152",
      "r160",
      "r224",
      "r225",
      "r457"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Components of an entity that engage in business activities from which they may earn revenue and incur expenses, including transactions with other components of the same entity.",
        "label": "Segments [Domain]"
       }
      }
     },
     "localname": "SegmentDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SegmentReportingDisclosureTextBlock": {
     "auth_ref": [
      "r126",
      "r127",
      "r128",
      "r138",
      "r141",
      "r146",
      "r150",
      "r151",
      "r152",
      "r153",
      "r154",
      "r159",
      "r160",
      "r161"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for reporting segments including data and tables. Reportable segments include those that meet any of the following quantitative thresholds a) it's reported revenue, including sales to external customers and intersegment sales or transfers is 10 percent or more of the combined revenue, internal and external, of all operating segments b) the absolute amount of its reported profit or loss is 10 percent or more of the greater, in absolute amount of 1) the combined reported profit of all operating segments that did not report a loss or 2) the combined reported loss of all operating segments that did report a loss c) its assets are 10 percent or more of the combined assets of all operating segments.",
        "label": "Segment Reporting Disclosure [Text Block]"
       }
      }
     },
     "localname": "SegmentReportingDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SellingAndMarketingExpense": {
     "auth_ref": [],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_OperatingExpenses",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate total amount of expenses directly related to the marketing or selling of products or services.",
        "label": "Marketing and sales"
       }
      }
     },
     "localname": "SellingAndMarketingExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensation": {
     "auth_ref": [
      "r82"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited": {
       "order": 12.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of noncash expense for share-based payment arrangement.",
        "label": "us-gaap_ShareBasedCompensation",
        "terseLabel": "Stock-based compensation expense"
       }
      }
     },
     "localname": "ShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1": {
     "auth_ref": [
      "r274"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Period over which grantee's right to exercise award under share-based payment arrangement is no longer contingent on satisfaction of service or performance condition, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, combination of market, performance or service condition.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period (Year)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate": {
     "auth_ref": [
      "r300"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Discount rate from fair value on offering date that participants pay for shares.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Discount from Market Price, Offering Date"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardDiscountFromMarketPriceOfferingDate",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod": {
     "auth_ref": [
      "r282"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that were forfeited during the reporting period.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod",
        "negatedTerseLabel": "Forfeited (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r287"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised or put into effect as a result of the occurrence of a terminating event.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue",
        "terseLabel": "Forfeited, weighted-average grant date fair value (in dollars per share)",
        "verboseLabel": "Forfeited, weighted-average grant date fair value (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod": {
     "auth_ref": [
      "r285"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod",
        "terseLabel": "Granted (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r285"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The weighted average fair value at grant date for nonvested equity-based awards issued during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
        "terseLabel": "Granted, weighted-average grant date fair value (in dollars per share)",
        "verboseLabel": "Granted, weighted-average grant date fair value (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber": {
     "auth_ref": [
      "r284"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of non-vested equity-based payment instruments, excluding stock (or unit) options, that validly exist and are outstanding as of the balance sheet date.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
        "periodEndLabel": "Restricted stock (in shares)",
        "periodStartLabel": "Restricted stock (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r284"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue",
        "periodEndLabel": "Restricted stock, weighted-average grant date fair value (in dollars per share)",
        "periodStartLabel": "Restricted stock, weighted-average grant date fair value (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod": {
     "auth_ref": [
      "r286"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod",
        "negatedTerseLabel": "Restrictions lapsed (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r286"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue",
        "terseLabel": "Restrictions lapsed, weighted-average grant date fair value (in dollars per share)",
        "verboseLabel": "Restrictions lapsed, weighted-average grant date fair value (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate": {
     "auth_ref": [
      "r295"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The estimated dividend rate (a percentage of the share price) to be paid (expected dividends) to holders of the underlying shares over the option's term.",
        "label": "Expected dividend yield"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate": {
     "auth_ref": [
      "r294"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The estimated measure of the percentage by which a share price is expected to fluctuate during a period. Volatility also may be defined as a probability-weighted measure of the dispersion of returns about the mean. The volatility of a share price is the standard deviation of the continuously compounded rates of return on the share over a specified period. That is the same as the standard deviation of the differences in the natural logarithms of the stock prices plus dividends, if any, over the period.",
        "label": "Expected volatility"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate": {
     "auth_ref": [
      "r296"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The risk-free interest rate assumption that is used in valuing an option on its own shares.",
        "label": "Risk-free interest rate"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber": {
     "auth_ref": [
      "r280"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of shares into which fully or partially vested stock options outstanding as of the balance sheet date can be currently converted under the option plan.",
        "label": "Options exercisable (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice": {
     "auth_ref": [
      "r280"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The weighted-average price as of the balance sheet date at which grantees can acquire the shares reserved for issuance on vested portions of options outstanding and currently exercisable under the stock option plan.",
        "label": "Options exercisable, weighted-average exercise price (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod": {
     "auth_ref": [
      "r282"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of shares under options that were cancelled during the reporting period as a result of occurrence of a terminating event specified in contractual agreements pertaining to the stock option plan.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod",
        "negatedLabel": "Forfeited (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Gross number of share options (or share units) granted during the period.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross",
        "terseLabel": "Granted (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r290"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The weighted average grant-date fair value of options granted during the reporting period as calculated by applying the disclosed option pricing methodology.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber": {
     "auth_ref": [
      "r279",
      "r300"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of options outstanding, including both vested and non-vested options.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
        "periodEndLabel": "Options outstanding (in shares)",
        "periodStartLabel": "Options outstanding (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice": {
     "auth_ref": [
      "r278"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average price at which grantees can acquire the shares reserved for issuance under the stock option plan.",
        "label": "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice",
        "periodEndLabel": "Options outstanding, weighted-average exercise price (in dollars per share)",
        "periodStartLabel": "Options outstanding, weighted-average exercise price (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": {
     "auth_ref": [
      "r271",
      "r276"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Award under share-based payment arrangement.",
        "label": "Award Type [Domain]"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average price at which option holders acquired shares when converting their stock options into shares.",
        "label": "Exercised, weighted-average exercise price (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average price at which grantees could have acquired the underlying shares with respect to stock options that were terminated.",
        "label": "Forfeited, weighted-average exercise price (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average per share amount at which grantees can acquire shares of common stock by exercise of options.",
        "label": "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice",
        "terseLabel": "Granted, weighted-average exercise price (in dollars per share)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions": {
     "auth_ref": [
      "r288"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of shares reserved for issuance pertaining to the outstanding exercisable stock options as of the balance sheet date in the customized range of exercise prices for which the market and performance vesting condition has been satisfied.",
        "label": "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions",
        "periodEndLabel": "Performance stock (in shares)",
        "periodStartLabel": "Performance stock (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfExercisableOptions",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod": {
     "auth_ref": [
      "r275"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Period from grant date that an equity-based award expires, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Expiration Period (Year)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1": {
     "auth_ref": [
      "r293",
      "r306"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Expected term of award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Expected life (Year)",
        "verboseLabel": "Expected life (months) (Month)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Purchase price of common stock expressed as a percentage of its fair value.",
        "label": "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Purchase Price of Common Stock, Percent"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_SignificantAccountingPoliciesTextBlock": {
     "auth_ref": [
      "r87",
      "r94"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for all significant accounting policies of the reporting entity.",
        "label": "Significant Accounting Policies [Text Block]"
       }
      }
     },
     "localname": "SignificantAccountingPoliciesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-2-recent-accounting-pronouncements"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_StatementBusinessSegmentsAxis": {
     "auth_ref": [
      "r1",
      "r126",
      "r129",
      "r130",
      "r131",
      "r132",
      "r133",
      "r134",
      "r135",
      "r136",
      "r137",
      "r138",
      "r139",
      "r140",
      "r142",
      "r143",
      "r144",
      "r145",
      "r146",
      "r147",
      "r148",
      "r149",
      "r150",
      "r152",
      "r160",
      "r210",
      "r223",
      "r224",
      "r225",
      "r457"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by business segments.",
        "label": "Segments [Axis]"
       }
      }
     },
     "localname": "StatementBusinessSegmentsAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementEquityComponentsAxis": {
     "auth_ref": [
      "r0",
      "r38",
      "r58",
      "r59",
      "r60",
      "r95",
      "r96",
      "r97",
      "r99",
      "r105",
      "r107",
      "r125",
      "r191",
      "r250",
      "r251",
      "r302",
      "r303",
      "r304",
      "r322",
      "r323",
      "r368",
      "r381",
      "r382",
      "r383",
      "r384",
      "r385",
      "r386",
      "r462",
      "r463",
      "r464",
      "r495"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by component of equity.",
        "label": "Equity Components [Axis]"
       }
      }
     },
     "localname": "StatementEquityComponentsAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line items represent financial concepts included in a table. These concepts are used to disclose reportable information associated with domain members defined in one or many axes to the table.",
        "label": "Statement [Line Items]"
       }
      }
     },
     "localname": "StatementLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-1-basis-of-presentation",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-tables",
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes",
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables",
      "http://www.protolabs.com/20210630/role/statement-note-2-recent-accounting-pronouncements",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-tables",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-tables",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-tables",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-tables",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfCashFlowsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Cash Flows [Abstract]"
       }
      }
     },
     "localname": "StatementOfCashFlowsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfFinancialPositionAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Financial Position [Abstract]"
       }
      }
     },
     "localname": "StatementOfFinancialPositionAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfStockholdersEquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Stockholders' Equity [Abstract]"
       }
      }
     },
     "localname": "StatementOfStockholdersEquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementTable": {
     "auth_ref": [
      "r95",
      "r96",
      "r97",
      "r125",
      "r427"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule reflecting a Statement of Income, Statement of Cash Flows, Statement of Financial Position, Statement of Shareholders' Equity and Other Comprehensive Income, or other statement as needed.",
        "label": "Statement [Table]"
       }
      }
     },
     "localname": "StatementTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-cash-flows-unaudited",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-1-basis-of-presentation",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-tables",
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes",
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-disaggregation-of-revenue-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-income-from-operations-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-longlived-assets-by-geographic-region-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-revenue-from-operations-by-reportable-segment-details",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables",
      "http://www.protolabs.com/20210630/role/statement-note-2-recent-accounting-pronouncements",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-tables",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-allocation-of-purchase-price-for-the-acquisition-of-rapid-details",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-changes-in-the-carrying-amount-of-goodwill-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-estimated-aggregated-amortization-expense-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-fair-value-of-financial-assets-measured-on-a-recurring-basis-details",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-tables",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-balance-of-heldtomaturity-debt-securities-by-contractual-maturity-details",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-tables",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-inventory-details",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-tables",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-blackscholes-option-pricing-model-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-in-the-valuation-of-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-assumptions-used-to-estimate-the-fair-value-of-the-espp-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-details-textual",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-performance-stock-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-restricted-stock-options-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesAcquisitions": {
     "auth_ref": [
      "r14",
      "r15",
      "r251"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares of stock issued during the period pursuant to acquisitions.",
        "label": "Common shares issued for Hubs acquisition (in shares)"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesAcquisitions",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation": {
     "auth_ref": [
      "r14",
      "r15",
      "r250",
      "r251"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP).",
        "label": "Common shares issued on exercise of options and other, net of shares withheld for tax obligations (in shares)"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised": {
     "auth_ref": [
      "r14",
      "r15",
      "r250",
      "r251",
      "r281"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of share options (or share units) exercised during the current period.",
        "label": "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised",
        "negatedLabel": "Exercised (in shares)"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesStockOptionsExercised",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-stock-option-activity-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueAcquisitions": {
     "auth_ref": [
      "r38",
      "r250",
      "r251"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Value of stock issued pursuant to acquisitions during the period.",
        "label": "Common shares issued for Hubs acquisition"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueAcquisitions",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised": {
     "auth_ref": [
      "r38",
      "r250",
      "r251"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Value of stock issued as a result of the exercise of stock options.",
        "label": "Common shares issued on exercise of options and other, net of shares withheld for tax obligations"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueStockOptionsExercised",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockRepurchasedAndRetiredDuringPeriodShares": {
     "auth_ref": [
      "r14",
      "r15",
      "r250",
      "r251"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares that have been repurchased and retired during the period.",
        "label": "us-gaap_StockRepurchasedAndRetiredDuringPeriodShares",
        "negatedLabel": "Repurchases of common stock (in shares)"
       }
      }
     },
     "localname": "StockRepurchasedAndRetiredDuringPeriodShares",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockRepurchasedAndRetiredDuringPeriodValue": {
     "auth_ref": [
      "r14",
      "r15",
      "r250",
      "r251"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Equity impact of the value of stock that has been repurchased and retired during the period. The excess of the purchase price over par value can be charged against retained earnings (once the excess is fully allocated to additional paid in capital).",
        "label": "us-gaap_StockRepurchasedAndRetiredDuringPeriodValue",
        "negatedLabel": "Repurchases of common stock"
       }
      }
     },
     "localname": "StockRepurchasedAndRetiredDuringPeriodValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockholdersEquity": {
     "auth_ref": [
      "r15",
      "r20",
      "r21",
      "r88",
      "r166",
      "r188",
      "r379",
      "r393"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited": {
       "order": 0.0,
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.",
        "label": "us-gaap_StockholdersEquity",
        "periodEndLabel": "Balance",
        "periodStartLabel": "Balance",
        "totalLabel": "Total shareholders' equity"
       }
      }
     },
     "localname": "StockholdersEquity",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited",
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-shareholders-equity-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-other-comprehensive-loss-details"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockholdersEquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Shareholders' equity"
       }
      }
     },
     "localname": "StockholdersEquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-balance-sheets-current-period-unaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "us-gaap_TableTextBlock",
        "terseLabel": "Notes Tables"
       }
      }
     },
     "localname": "TableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-10-accumulated-other-comprehensive-income-loss-tables",
      "http://www.protolabs.com/20210630/role/statement-note-12-segment-reporting-tables",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-tables",
      "http://www.protolabs.com/20210630/role/statement-note-4-business-combinations-tables",
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-tables",
      "http://www.protolabs.com/20210630/role/statement-note-6-fair-value-measurements-tables",
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-tables",
      "http://www.protolabs.com/20210630/role/statement-note-8-inventory-tables",
      "http://www.protolabs.com/20210630/role/statement-note-9-stockbased-compensation-tables"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TradeNamesMember": {
     "auth_ref": [
      "r342"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Rights acquired through registration of a business name to gain or protect exclusive use thereof.",
        "label": "Trade Names [Member]"
       }
      }
     },
     "localname": "TradeNamesMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-5-goodwill-and-other-intangible-assets-intangible-assets-other-than-goodwill-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain": {
     "auth_ref": [
      "r177",
      "r181",
      "r184",
      "r185",
      "r186",
      "r244",
      "r249",
      "r367",
      "r395",
      "r396",
      "r397",
      "r398",
      "r399",
      "r400",
      "r401",
      "r402",
      "r403",
      "r404",
      "r405",
      "r406",
      "r407",
      "r408",
      "r409",
      "r410",
      "r411",
      "r412",
      "r413",
      "r414",
      "r415",
      "r416",
      "r417",
      "r418",
      "r419",
      "r420",
      "r421",
      "r422",
      "r423",
      "r424",
      "r487",
      "r488",
      "r489",
      "r490",
      "r491",
      "r492",
      "r493"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Instrument or contract that imposes a contractual obligation to deliver cash or another financial instrument or to exchange other financial instruments on potentially unfavorable terms and conveys a contractual right to receive cash or another financial instrument or to exchange other financial instruments on potentially favorable terms.",
        "label": "Financial Instruments [Domain]"
       }
      }
     },
     "localname": "TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_USGovernmentAgenciesDebtSecuritiesMember": {
     "auth_ref": [
      "r92",
      "r257",
      "r443"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Debentures, notes, and other debt securities issued by US government agencies, for example, but not limited to, Government National Mortgage Association (GNMA or Ginnie Mae). Excludes US treasury securities and debt issued by government-sponsored Enterprises (GSEs), for example, but is not limited to, Federal Home Loan Mortgage Corporation (FHLMC or Freddie Mac), Federal National Mortgage Association (FNMA or Fannie Mae), and the Federal Home Loan Bank (FHLB).",
        "label": "US Government Agencies Debt Securities [Member]"
       }
      }
     },
     "localname": "USGovernmentAgenciesDebtSecuritiesMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_USStatesAndPoliticalSubdivisionsMember": {
     "auth_ref": [
      "r257",
      "r468"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Bonds or similar securities issued by state, city, or local US governments or the agencies operated by state, city, or local governments. Debt securities issued by state governments may include bond issuances of US state authorities including, for example, but not limited to, housing authorities, dormitory authorities, and general obligations while debt securities issued by political subdivisions of US states would include, for example, debt issuances by county, borough, city, or municipal governments.",
        "label": "US States and Political Subdivisions Debt Securities [Member]"
       }
      }
     },
     "localname": "USStatesAndPoliticalSubdivisionsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-7-marketable-securities-shortterm-and-longterm-available-for-sale-securities-details"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_UnrecognizedTaxBenefits": {
     "auth_ref": [
      "r312",
      "r318"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of unrecognized tax benefits.",
        "label": "us-gaap_UnrecognizedTaxBenefits",
        "terseLabel": "Unrecognized Tax Benefits, Ending Balance"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefits",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-note-11-income-taxes-details-textual"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": {
     "auth_ref": [
      "r110",
      "r118"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period.",
        "label": "Diluted (in shares)",
        "totalLabel": "Diluted - weighted-average shares outstanding: (in shares)"
       }
      }
     },
     "localname": "WeightedAverageNumberOfDilutedSharesOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": {
     "auth_ref": [
      "r109",
      "r118"
     ],
     "calculation": {
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details": {
       "order": 1.0,
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period.",
        "label": "Basic (in shares)",
        "terseLabel": "Basic - weighted-average shares outstanding: (in shares)"
       }
      }
     },
     "localname": "WeightedAverageNumberOfSharesOutstandingBasic",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited",
      "http://www.protolabs.com/20210630/role/statement-note-3-net-income-per-common-share-computation-of-basic-and-diluted-net-income-per-share-details"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Shares used to compute net income per share:"
       }
      }
     },
     "localname": "WeightedAverageNumberOfSharesOutstandingDilutedDisclosureItemsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://www.protolabs.com/20210630/role/statement-consolidated-statements-of-comprehensive-income-unaudited"
     ],
     "xbrltype": "stringItemType"
    }
   },
   "unitCount": 7
  }
 },
 "std_ref": {
  "r0": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "105",
   "URI": "http://asc.fasb.org/extlink&oid=124434974&loc=SL124442142-165695"
  },
  "r1": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "205",
   "URI": "http://asc.fasb.org/extlink&oid=109222650&loc=d3e1361-107760"
  },
  "r10": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6361739&loc=d3e7789-107766"
  },
  "r100": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22694-107794"
  },
  "r101": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22694-107794"
  },
  "r102": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22583-107794"
  },
  "r103": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22595-107794"
  },
  "r104": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22644-107794"
  },
  "r105": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22644-107794"
  },
  "r106": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22658-107794"
  },
  "r107": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22663-107794"
  },
  "r108": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 11.M.Q2)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=122038215&loc=d3e31137-122693"
  },
  "r109": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=d3e1448-109256"
  },
  "r11": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(13))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r110": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=d3e1505-109256"
  },
  "r111": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=d3e1252-109256"
  },
  "r112": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=d3e1707-109256"
  },
  "r113": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "23",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=d3e1757-109256"
  },
  "r114": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=d3e1500-109256"
  },
  "r115": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "60B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=SL5780133-109256"
  },
  "r116": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "60B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=SL5780133-109256"
  },
  "r117": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=d3e1337-109256"
  },
  "r118": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=124432515&loc=d3e3550-109257"
  },
  "r119": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=124432515&loc=d3e3550-109257"
  },
  "r12": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(14))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r120": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=124432515&loc=d3e3630-109257"
  },
  "r121": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=109243012&loc=SL65017193-207537"
  },
  "r122": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125512782&loc=d3e3842-109258"
  },
  "r123": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "52",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125512782&loc=d3e4984-109258"
  },
  "r124": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "260",
   "URI": "http://asc.fasb.org/topic&trid=2144383"
  },
  "r125": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "272",
   "URI": "http://asc.fasb.org/extlink&oid=125520817&loc=d3e70191-108054"
  },
  "r126": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8657-108599"
  },
  "r127": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8721-108599"
  },
  "r128": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8721-108599"
  },
  "r129": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8736-108599"
  },
  "r13": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(20))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r130": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8736-108599"
  },
  "r131": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8736-108599"
  },
  "r132": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8736-108599"
  },
  "r133": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8736-108599"
  },
  "r134": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8736-108599"
  },
  "r135": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(g)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8736-108599"
  },
  "r136": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8736-108599"
  },
  "r137": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(j)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8736-108599"
  },
  "r138": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8736-108599"
  },
  "r139": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8813-108599"
  },
  "r14": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(28))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r140": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8813-108599"
  },
  "r141": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "26",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8844-108599"
  },
  "r142": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8906-108599"
  },
  "r143": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8906-108599"
  },
  "r144": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8906-108599"
  },
  "r145": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8906-108599"
  },
  "r146": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "31",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8924-108599"
  },
  "r147": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8933-108599"
  },
  "r148": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8933-108599"
  },
  "r149": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8933-108599"
  },
  "r15": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(29))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r150": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8933-108599"
  },
  "r151": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8933-108599"
  },
  "r152": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8933-108599"
  },
  "r153": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "34",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8981-108599"
  },
  "r154": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "40",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e9031-108599"
  },
  "r155": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e9038-108599"
  },
  "r156": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e9038-108599"
  },
  "r157": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "a",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e9038-108599"
  },
  "r158": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "b",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e9038-108599"
  },
  "r159": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e9038-108599"
  },
  "r16": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(3))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r160": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "42",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e9054-108599"
  },
  "r161": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "280",
   "URI": "http://asc.fasb.org/topic&trid=2134510"
  },
  "r162": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=124259787&loc=d3e4428-111522"
  },
  "r163": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=124259787&loc=d3e4531-111522"
  },
  "r164": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=123577603&loc=d3e5074-111524"
  },
  "r165": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=123577603&loc=SL6953401-111524"
  },
  "r166": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 4.E)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=122038336&loc=d3e74512-122707"
  },
  "r167": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=124260329&loc=d3e26610-111562"
  },
  "r168": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=124260329&loc=d3e26853-111562"
  },
  "r169": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27161-111563"
  },
  "r17": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(1))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r170": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(aa)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27161-111563"
  },
  "r171": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27161-111563"
  },
  "r172": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27161-111563"
  },
  "r173": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27232-111563"
  },
  "r174": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(aa)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27232-111563"
  },
  "r175": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27232-111563"
  },
  "r176": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27232-111563"
  },
  "r177": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27232-111563"
  },
  "r178": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=SL120269820-111563"
  },
  "r179": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=SL120269820-111563"
  },
  "r18": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(3))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r180": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=SL120269820-111563"
  },
  "r181": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=SL120269820-111563"
  },
  "r182": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27357-111563"
  },
  "r183": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "320",
   "URI": "http://asc.fasb.org/topic&trid=2196928"
  },
  "r184": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "321",
   "URI": "http://asc.fasb.org/extlink&oid=123583765&loc=SL75117539-209714"
  },
  "r185": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "321",
   "URI": "http://asc.fasb.org/extlink&oid=123583765&loc=SL75117539-209714"
  },
  "r186": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "321",
   "URI": "http://asc.fasb.org/extlink&oid=123583765&loc=SL75117539-209714"
  },
  "r187": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "321",
   "URI": "http://asc.fasb.org/topic&trid=75115024"
  },
  "r188": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "323",
   "URI": "http://asc.fasb.org/extlink&oid=114001798&loc=d3e33918-111571"
  },
  "r189": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "323",
   "URI": "http://asc.fasb.org/topic&trid=2196965"
  },
  "r19": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(4))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r190": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "325",
   "URI": "http://asc.fasb.org/topic&trid=2197064"
  },
  "r191": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=122640432&loc=SL121648383-210437"
  },
  "r192": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255206&loc=SL82895884-210446"
  },
  "r193": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255953&loc=SL82919244-210447"
  },
  "r194": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255953&loc=SL82919249-210447"
  },
  "r195": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255953&loc=SL82919253-210447"
  },
  "r196": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255953&loc=SL82919258-210447"
  },
  "r197": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255953&loc=SL82919230-210447"
  },
  "r198": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124258926&loc=SL82898722-210454"
  },
  "r199": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124269663&loc=SL82922888-210455"
  },
  "r2": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "205",
   "URI": "http://asc.fasb.org/extlink&oid=109222650&loc=SL51721683-107760"
  },
  "r20": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r200": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124269663&loc=SL82922895-210455"
  },
  "r201": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124269663&loc=SL82922900-210455"
  },
  "r202": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121590138&loc=SL82922954-210456"
  },
  "r203": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 5.BB)",
   "Topic": "330",
   "URI": "http://asc.fasb.org/extlink&oid=27011343&loc=d3e100047-122729"
  },
  "r204": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "330",
   "URI": "http://asc.fasb.org/topic&trid=2126998"
  },
  "r205": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=99380562&loc=d3e13770-109266"
  },
  "r206": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=120320667&loc=SL49117168-202975"
  },
  "r207": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267"
  },
  "r208": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(f)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267"
  },
  "r209": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267"
  },
  "r21": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(31))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r210": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267"
  },
  "r211": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=121556970&loc=d3e13854-109267"
  },
  "r212": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=6388964&loc=d3e16225-109274"
  },
  "r213": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r214": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(1)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r215": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r216": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r217": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(1)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r218": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(2)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r219": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(3)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r22": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(32))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r220": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r221": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "350",
   "URI": "http://asc.fasb.org/topic&trid=2144416"
  },
  "r222": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r223": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=109226691&loc=d3e2941-110230"
  },
  "r224": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869"
  },
  "r225": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.P.4(d))",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747"
  },
  "r226": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "450",
   "URI": "http://asc.fasb.org/extlink&oid=121557415&loc=d3e14615-108349"
  },
  "r227": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(i))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442526-122756"
  },
  "r228": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(ii))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442526-122756"
  },
  "r229": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii)(A))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442526-122756"
  },
  "r23": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(4)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r230": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii)(B))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442526-122756"
  },
  "r231": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442526-122756"
  },
  "r232": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iv))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442526-122756"
  },
  "r233": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(5))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442526-122756"
  },
  "r234": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(i))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442552-122756"
  },
  "r235": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A)",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442552-122756"
  },
  "r236": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442552-122756"
  },
  "r237": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B)",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442552-122756"
  },
  "r238": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442552-122756"
  },
  "r239": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(C))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442552-122756"
  },
  "r24": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r240": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iv))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442552-122756"
  },
  "r241": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(5))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442552-122756"
  },
  "r242": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=123466505&loc=SL123495323-112611"
  },
  "r243": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1D",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=123466505&loc=SL123495340-112611"
  },
  "r244": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1I",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=123466505&loc=SL123495371-112611"
  },
  "r245": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "69B",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=123466577&loc=SL123495735-112612"
  },
  "r246": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "69C",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=123466577&loc=SL123495737-112612"
  },
  "r247": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496158-112644"
  },
  "r248": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496158-112644"
  },
  "r249": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496189-112644"
  },
  "r25": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(b))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r250": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=d3e21463-112644"
  },
  "r251": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.3-04)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=120397183&loc=d3e187085-122770"
  },
  "r252": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123351226&loc=SL49130543-203045"
  },
  "r253": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123351226&loc=SL49130545-203045"
  },
  "r254": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123410239&loc=SL49130690-203046-203046"
  },
  "r255": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123410239&loc=SL49130690-203046-203046"
  },
  "r256": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(i)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r257": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(ii)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r258": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(01)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r259": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r26": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(c))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r260": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(A)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r261": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(B)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r262": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(C)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r263": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(03)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r264": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123450688&loc=d3e4179-114921"
  },
  "r265": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=65877416&loc=SL14450702-114947"
  },
  "r266": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(d)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=65877416&loc=SL14450657-114947"
  },
  "r267": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(f)(3)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=65877416&loc=SL14450657-114947"
  },
  "r268": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=65877416&loc=SL14450673-114947"
  },
  "r269": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "80",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=35742348&loc=SL14450788-114948"
  },
  "r27": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(7))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r270": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=123468992&loc=d3e4534-113899"
  },
  "r271": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5047-113901"
  },
  "r272": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5047-113901"
  },
  "r273": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5047-113901"
  },
  "r274": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r275": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r276": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a),(g)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r277": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r278": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(i)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r279": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(i)-(ii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r28": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(8))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r280": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r281": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r282": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(3)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r283": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r284": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(i)-(ii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r285": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r286": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r287": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(3)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r288": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(iii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r289": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r29": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.1)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r290": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r291": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r292": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r293": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(i)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r294": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(ii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r295": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r296": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iv)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r297": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(g)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r298": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)(1)(i)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r299": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(i)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r3": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "205",
   "URI": "http://asc.fasb.org/topic&trid=2122149"
  },
  "r30": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.12)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r300": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r301": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=SL79508275-113901"
  },
  "r302": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r303": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(f)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r304": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r305": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(g)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r306": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 14.D.2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=122041274&loc=d3e301413-122809"
  },
  "r307": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 14.F)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=122041274&loc=d3e301413-122809"
  },
  "r308": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=122142933&loc=d3e11149-113907"
  },
  "r309": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=122142933&loc=d3e11178-113907"
  },
  "r31": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.17)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r310": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "718",
   "URI": "http://asc.fasb.org/topic&trid=2228938"
  },
  "r311": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "730",
   "URI": "http://asc.fasb.org/extlink&oid=6420194&loc=d3e21568-108373"
  },
  "r312": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123427490&loc=SL37586934-109318"
  },
  "r313": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123427490&loc=d3e31917-109318"
  },
  "r314": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123427490&loc=d3e31931-109318"
  },
  "r315": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32672-109319"
  },
  "r316": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32687-109319"
  },
  "r317": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32705-109319"
  },
  "r318": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=SL6600010-109319"
  },
  "r319": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32809-109319"
  },
  "r32": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r320": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32857-109319"
  },
  "r321": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319"
  },
  "r322": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)(2)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123459177&loc=SL121830611-158277"
  },
  "r323": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)(3)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123459177&loc=SL121830611-158277"
  },
  "r324": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 6.I.5.Q1)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817"
  },
  "r325": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 6.I.7)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817"
  },
  "r326": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.7)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817"
  },
  "r327": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.1)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817"
  },
  "r328": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.2)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817"
  },
  "r329": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.4)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817"
  },
  "r33": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19-26)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r330": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 11.C)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330215-122817"
  },
  "r331": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123586238&loc=d3e38679-109324"
  },
  "r332": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "270",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=6424409&loc=d3e44925-109338"
  },
  "r333": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=6424122&loc=d3e41874-109331"
  },
  "r334": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "740",
   "URI": "http://asc.fasb.org/topic&trid=2144680"
  },
  "r335": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=123586518&loc=d3e961-128460"
  },
  "r336": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=79982066&loc=d3e1392-128463"
  },
  "r337": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=79982066&loc=d3e1486-128463"
  },
  "r338": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=123413009&loc=d3e4845-128472"
  },
  "r339": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=123413009&loc=d3e4845-128472"
  },
  "r34": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.2)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r340": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=123413009&loc=SL65897772-128472"
  },
  "r341": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=123410050&loc=d3e5227-128473"
  },
  "r342": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=123410050&loc=d3e5263-128473"
  },
  "r343": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(e)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=123410050&loc=d3e5263-128473"
  },
  "r344": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=123410050&loc=d3e5333-128473"
  },
  "r345": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "38",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=123410050&loc=d3e5504-128473"
  },
  "r346": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=6911189&loc=d3e6408-128476"
  },
  "r347": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=116859721&loc=d3e6578-128477"
  },
  "r348": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=116859721&loc=d3e6613-128477"
  },
  "r349": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=116859824&loc=d3e6819-128478"
  },
  "r35": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.20)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r350": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "30",
   "Subparagraph": "b",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=116859824&loc=d3e6819-128478"
  },
  "r351": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=120321790&loc=d3e6927-128479"
  },
  "r352": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)(1)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=120321790&loc=d3e6927-128479"
  },
  "r353": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)(4)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=120321790&loc=d3e6927-128479"
  },
  "r354": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(c)(1)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=120321790&loc=d3e6927-128479"
  },
  "r355": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(c)(3)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=120321790&loc=d3e6927-128479"
  },
  "r356": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(1)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=120321790&loc=d3e7008-128479"
  },
  "r357": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "805",
   "URI": "http://asc.fasb.org/topic&trid=2303972"
  },
  "r358": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=123454820&loc=SL4569616-111683"
  },
  "r359": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=123454820&loc=SL4569643-111683"
  },
  "r36": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.21)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r360": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=116870748&loc=SL6758485-165988"
  },
  "r361": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=116870748&loc=SL6758485-165988"
  },
  "r362": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(3)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684"
  },
  "r363": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c),(3)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684"
  },
  "r364": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bb)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=123419778&loc=d3e5710-111685"
  },
  "r365": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=123419778&loc=d3e5710-111685"
  },
  "r366": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "810",
   "URI": "http://asc.fasb.org/topic&trid=2197479"
  },
  "r367": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(f)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=123477628&loc=d3e90205-114008"
  },
  "r368": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)(3)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=123482062&loc=SL123482106-238011"
  },
  "r369": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)(4)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=123482062&loc=SL123482106-238011"
  },
  "r37": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.24)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r370": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=123482062&loc=SL123482106-238011"
  },
  "r371": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19207-110258"
  },
  "r372": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19207-110258"
  },
  "r373": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bbb)(1)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19207-110258"
  },
  "r374": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bbb)(2)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19207-110258"
  },
  "r375": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19207-110258"
  },
  "r376": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19207-110258"
  },
  "r377": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19279-110258"
  },
  "r378": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=SL6742756-110258"
  },
  "r379": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=123596393&loc=d3e14064-108612"
  },
  "r38": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.29-31)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r380": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "230",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=123444420&loc=d3e33268-110906"
  },
  "r381": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=118261656&loc=d3e32136-110900"
  },
  "r382": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900"
  },
  "r383": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900"
  },
  "r384": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(c)",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900"
  },
  "r385": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900"
  },
  "r386": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=6450520&loc=d3e32583-110901"
  },
  "r387": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123391704&loc=SL77918627-209977"
  },
  "r388": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123391704&loc=SL77918627-209977"
  },
  "r389": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123391704&loc=SL77918643-209977"
  },
  "r39": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.3(a)(4))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r390": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(1)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123408670&loc=SL77918686-209980"
  },
  "r391": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "852",
   "URI": "http://asc.fasb.org/extlink&oid=124433192&loc=SL2890621-112765"
  },
  "r392": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "852",
   "URI": "http://asc.fasb.org/extlink&oid=124433192&loc=SL2890621-112765"
  },
  "r393": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "852",
   "URI": "http://asc.fasb.org/extlink&oid=84165509&loc=d3e56426-112766"
  },
  "r394": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "855",
   "URI": "http://asc.fasb.org/extlink&oid=6842918&loc=SL6314020-165662"
  },
  "r395": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)(i)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r396": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)(ii)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r397": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r398": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(bb)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r399": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(bb)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r4": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765"
  },
  "r40": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.6(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r400": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(bb)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r401": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r402": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r403": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r404": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719"
  },
  "r405": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719"
  },
  "r406": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719"
  },
  "r407": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719"
  },
  "r408": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=66007379&loc=d3e113888-111728"
  },
  "r409": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=109249958&loc=SL34722452-111729"
  },
  "r41": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.9)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r410": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122625-111746"
  },
  "r411": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122625-111746"
  },
  "r412": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122625-111746"
  },
  "r413": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(4)(i)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122625-111746"
  },
  "r414": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r415": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r416": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r417": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(4)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r418": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(5)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r419": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(6)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r42": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=d3e526-108580"
  },
  "r420": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(7)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r421": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(b)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r422": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r423": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r424": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r425": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "910",
   "URI": "http://asc.fasb.org/extlink&oid=123353855&loc=SL119991595-234733"
  },
  "r426": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "730",
   "Topic": "912",
   "URI": "http://asc.fasb.org/extlink&oid=6472174&loc=d3e58812-109433"
  },
  "r427": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 11.L)",
   "Topic": "924",
   "URI": "http://asc.fasb.org/extlink&oid=6472922&loc=d3e499488-122856"
  },
  "r428": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "926",
   "URI": "http://asc.fasb.org/extlink&oid=120154696&loc=d3e54445-107959"
  },
  "r429": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "340",
   "Topic": "928",
   "URI": "http://asc.fasb.org/extlink&oid=6473545&loc=d3e61844-108004"
  },
  "r43": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669646-108580"
  },
  "r430": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "20",
   "Topic": "940",
   "URI": "http://asc.fasb.org/extlink&oid=123384075&loc=d3e41242-110953"
  },
  "r431": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(10)(1))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r432": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(11))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r433": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(15)(1))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r434": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(23))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r435": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(6))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r436": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03.10)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r437": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(15))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260"
  },
  "r438": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(22))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260"
  },
  "r439": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(26))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260"
  },
  "r44": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a),(b),(c)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669646-108580"
  },
  "r440": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(27))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260"
  },
  "r441": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "230",
   "Subparagraph": "b.",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=123398031&loc=d3e60009-112784"
  },
  "r442": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "235",
   "Subparagraph": "(SX 210.9-05(b)(2))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120399901&loc=d3e537907-122884"
  },
  "r443": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Subparagraph": "(b)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=123599081&loc=d3e62557-112803"
  },
  "r444": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=124429447&loc=SL124453093-239630"
  },
  "r445": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(12))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r446": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(15)(b)(1))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r447": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(3))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r448": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(4))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r449": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(25))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r45": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669646-108580"
  },
  "r450": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(8))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r451": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03.5(c))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r452": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(18))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263"
  },
  "r453": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(22))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263"
  },
  "r454": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(23))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263"
  },
  "r455": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(8))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263"
  },
  "r456": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(9))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263"
  },
  "r457": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4H",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=116884468&loc=SL65671331-158438"
  },
  "r458": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(d)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124506351&loc=SL117782755-158439"
  },
  "r459": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(a)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124504033&loc=SL117783719-158441"
  },
  "r46": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669646-108580"
  },
  "r460": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(b)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124504033&loc=SL117783719-158441"
  },
  "r461": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "29F",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124504033&loc=SL117819544-158441"
  },
  "r462": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r463": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)(1)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r464": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)(2)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r465": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(2)(i)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r466": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(2)(ii)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r467": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(h)(2)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r468": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(e)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124508989&loc=d3e19393-158473"
  },
  "r469": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "310",
   "Subparagraph": "(SX 210.12-29(Footnote 4))",
   "Topic": "948",
   "URI": "http://asc.fasb.org/extlink&oid=120402547&loc=d3e617274-123014"
  },
  "r47": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(h)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669646-108580"
  },
  "r470": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column B))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r471": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column C))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r472": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column D))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r473": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column E))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r474": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column F))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r475": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column G))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r476": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column H))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r477": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column I))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r478": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Footnote 2))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r479": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "310",
   "Subparagraph": "(c)",
   "Topic": "976",
   "URI": "http://asc.fasb.org/extlink&oid=6497875&loc=d3e22274-108663"
  },
  "r48": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669646-108580"
  },
  "r480": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "310",
   "Subparagraph": "(b)",
   "Topic": "978",
   "URI": "http://asc.fasb.org/extlink&oid=123360121&loc=d3e27327-108691"
  },
  "r481": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "985",
   "URI": "http://asc.fasb.org/extlink&oid=6501960&loc=d3e128462-111756"
  },
  "r482": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b"
  },
  "r483": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "d1-1"
  },
  "r484": {
   "Name": "Form 10-Q",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "308",
   "Subsection": "a"
  },
  "r485": {
   "Name": "Forms 10-K, 10-Q, 20-F",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "13",
   "Subsection": "a-1"
  },
  "r486": {
   "Name": "Regulation 12B",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b-2"
  },
  "r487": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(a)",
   "Publisher": "SEC",
   "Section": "1402"
  },
  "r488": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(b)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(1)"
  },
  "r489": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(b)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(2)"
  },
  "r49": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=d3e637-108580"
  },
  "r490": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(b)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(3)"
  },
  "r491": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(c)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(2)(i)"
  },
  "r492": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(c)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(2)(ii)"
  },
  "r493": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(c)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(2)(iii)"
  },
  "r494": {
   "Name": "Regulation S-T",
   "Number": "232",
   "Publisher": "SEC",
   "Section": "405"
  },
  "r495": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(a)(3)(iii)(03)",
   "Topic": "848"
  },
  "r5": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765"
  },
  "r50": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=d3e681-108580"
  },
  "r51": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669686-108580"
  },
  "r52": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669619-108580"
  },
  "r53": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669619-108580"
  },
  "r54": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669619-108580"
  },
  "r55": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669625-108580"
  },
  "r56": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669625-108580"
  },
  "r57": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=d3e557-108580"
  },
  "r58": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124431353&loc=SL124442407-227067"
  },
  "r59": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124431353&loc=SL124442411-227067"
  },
  "r6": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765"
  },
  "r60": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124431353&loc=SL124452729-227067"
  },
  "r61": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124507222&loc=d3e1436-108581"
  },
  "r62": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(10))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r63": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(20))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r64": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(24))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r65": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(25))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r66": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.1,2)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r67": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.2(a),(d))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r68": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.4)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r69": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.9)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r7": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765"
  },
  "r70": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "220",
   "URI": "http://asc.fasb.org/topic&trid=2134417"
  },
  "r71": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3151-108585"
  },
  "r72": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3179-108585"
  },
  "r73": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3179-108585"
  },
  "r74": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3213-108585"
  },
  "r75": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3213-108585"
  },
  "r76": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3213-108585"
  },
  "r77": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3213-108585"
  },
  "r78": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3255-108585"
  },
  "r79": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3291-108585"
  },
  "r8": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765"
  },
  "r80": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3521-108585"
  },
  "r81": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3536-108585"
  },
  "r82": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3602-108585"
  },
  "r83": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3602-108585"
  },
  "r84": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3602-108585"
  },
  "r85": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3044-108585"
  },
  "r86": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123431023&loc=SL98516268-108586"
  },
  "r87": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=123372394&loc=d3e18726-107790"
  },
  "r88": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(g)(1)(ii))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r89": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h)(1)(Note 1))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r9": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=124098289&loc=d3e6801-107765"
  },
  "r90": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h)(2))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r91": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r92": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(m)(1)(ii)(A))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r93": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-04(a))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e24072-122690"
  },
  "r94": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "235",
   "URI": "http://asc.fasb.org/topic&trid=2122369"
  },
  "r95": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "23",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124436220&loc=d3e21914-107793"
  },
  "r96": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124436220&loc=d3e21930-107793"
  },
  "r97": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124436220&loc=d3e21711-107793"
  },
  "r98": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(2)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22499-107794"
  },
  "r99": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(3)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22499-107794"
  }
 },
 "version": "2.1"
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>ZIP
<SEQUENCE>70
<FILENAME>0001437749-21-018375-xbrl.zip
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 0001437749-21-018375-xbrl.zip
M4$L#!!0    ( $2( U-:DFW;<0@  $M    -    97A?,C4R,C8T+FAT;>U<
M;7,:-Q#^'/^*K3M-[1G @)W& >P9;!/7T]2F&,^TGSJZ.QVGL4ZZ2#HP_?7=
MU1T&OR1UFH;@AGPPG$[2KE:[SS[:.]))7"H/.PEGT>'&BXX33O)#?O-GXU6]
MT6C4\&YGIVC$N]]5JW#*%3?,\0B"*0R37$7<G.B40U\;QR14X?5.X\U.L]YL
MP%ZKOM^J_P3]7Z%:/>RDW#$($V8L=P>;N8NK^YMEJV(I/]B,M4F9JT;<\= )
MK38AU,IQA;T=ESQ+M.('2F\>;G1V"HT[@8ZF8-U4^N'*56.6"CEMP<OWN7;M
MH4BYA7,^@8%.F2H:*^";*V"Y$7$;_#@K_N(M:-0SUX:,19%0HQ;4A8)ZK2%4
M&\+<6&U:P'*GVZ1!]IC8'^\)_/&>K+DH+REE9B14"[_"ZUH3&QR_<54FQ4BU
M)(\="GJI INU.SO9X<:7EVG$*"&AG>"P=Y.(0#C8;=0:G9W@\,MHL+=7>[WT
M93>;]]<=HH]Q4RS\N#<8GKT].^X.SR[.H7\UN+SJG@]A> &#JW<]:.RR:F-O
MBVW#Q0 :KZ+9Q5OX<E;ZN,+#GWMPV3N^&IP-SWJ7T/O]^.?N^6D/NL=#4JOQ
M9G>O\M64ZUY"]^2B/^R=W#$EZNO-NUMO?G73=0='W?/>9?7B]W>]/V96:];K
MS95T^\\"ME(%\!<+TJ$4?U;!Z0)N'!SI2)L*A/A=Q%-P"7.M;\D618O [*9<
M"YJDX>9AHP9GD+ Q!\/'@D\P";I$6/@M9P9]2DYAP#-,@Z 5O,5<AI*JOX&.
MH6^TT_".!:C/F0IK*[6JU;-SLP9'S*)UT8[I%*Z5GD@>C7BE,+<IC!QIU$9I
MYTD"PTS-U!1RY4S.<1%(45*<DZS/4 ?<'H'L)&8A-AG0*:8VW!+?[T$'Q4-N
M+3-3ZI*R:XYR%^:TV!:A,BA24L(D&=0A%";,4^RF<#AX9@231(0)V)S^S,=/
MN.'E)+2 5%B)= 8I!TR$2W"!-D,&1-)IW@Q5TQ$N<XS#/.]:,,-*;=SJN=+N
M1UR)0RP4;A;M^WQS*NA'V!UOFX7[0A7D%%DI?@]E'N&<Z  +.U%!YQ$$ AGN
M'[D>N:24<]\JM]7>$XWN&PF:N$(]<HD=T*%T1C0;6ZW7)V0V@5CJB9UYF^$C
M89UA*(A18Z%W3*@]=QH[4^:!MBNU2ZOG-WLU/-PL&OGE]_O-QNNV+3VC3(P4
MLCJ.!5YZ\Y\!,]QO-&Z<""2G#0&.WA5(81/J3MU2A"N"++J.A VEMCF.(R S
M6A8[GAD=\@B;+6SA!D<</:;8Q=X-'J+4B$,7,6*02^SA6>FK+;[MAWI:2E?%
MI2#"HPI/H_F!@&3! 0N'(%V>+"B^(RA&0;3.^VZ)/2A;?E7B0);G$&B#:'RP
M6<<C)9>R/.#=7MN,A;/K4L>)B%R",NL_M!?]H][^#.7QV/ABXP6>L@U^H<]H
M)FU,[A0R62[$Z:Q=*/#F!S\*._^WUONXV4C>CHN>K.7N\K1DV_]*P_W]Y:EX
MPBU>80CYM/_/\5TA1A*RW#Y]"%&#@&.LEI(*LJ%S@Q,@\H^%]?D$>W'EYR$"
M/\]$B]G,<,E\\)=L8Q[ E3+3T4V!60EUL5J*R%=_;!Y8$0EF!"U %)S(YU=%
M,^66>(K'2NM)C<\^VG)4R&&VHT$9H\W*):.DB<OR2LSY#HXHV-,BZ<-O :>.
MF-=P/(\>."Q^4GAMX">%_A< GMTGU6K6P//_ I[@N0'/D]/^ _QY.F%X,@PA
M=(U%1.C"K%8^-)A%9**S$D$.,]$L_!&0! N$%&Y*7/<QL02&'BD\"!0X=J?K
MPEG+$[";<D%9;C($(>NY>1AB<'H%_*EKY"O;$K$([_",0(ZZX(FRP!L$0Y$A
M!UHCSAIQEJ)EN/J(TQLSF7L^0.'(XY@>W(PQD.PCY]3;(]03^$UQ^?C1U0,,
M#D1N8HL#<J!S]V$-GL+ V&UO3J?_^)\++Q#,Z@H>,WEA"=2G39.O,6*-$<O0
M,EI]C#@IPN]A&%.]MBPP^#N/8L4G<!$ZXN@PS T%Z\)YXI%94VT=MM.S()S+
MHHG@?5'$AZT/#(D1=9 EW.M=*AXB%OA2,U6A57ZKUW:A5<+L[>&+^(5'*1YY
MXN7M49*B*4AQS659=[[7O_+9)OI*R/2,GO"\^K=E/_]4*)IY>F6>'"A7+7K;
M/$^0OWP"1W]P/+]5C>$1W6EC;VFQ;\ ITU0XQ_E',G&@D7C3_4B@?GZ2+?1)
M3'R6$BM^4J%@%DC\?2Y0?1\TN?*O:-CM=75OG<Z^I>I>5^+Q$J\%AC]5N:E>
M'@J.\5K2UMLJVX2S:^*AQ7'3,U%_4/8/(&>/=SX)!<J"6/&,X9&<P2(<:/EM
MRO@@8I3':QR"88_14RG(L"6+Y"FN'VWA%U.FZD<?A*V)[AH9UN6W!61 /AL;
M3+X5C%/N^0)&NG_ 7T)"I:"#0HVU''/BA(J-RO<43$DQ>)I)/>5X=Y+H@E>P
M.X"# /&?$.;:JC+!9QZZ>S_5EGFZ0M=J03<?Y<@Q=RM +]Y^0J0$VCF=EIK7
MEZGXY\#.2NOY3$W:6(*>L_>+CZ:M_Z]!"^"J%EJW_!-3:&0W\'W=_VO/8&*I
M7KQC=^Z\VOD![%]AH/M6XG"5]7RF)ET&M'U3)ETN=JUQ:U557>/6&K>>DTF7
MBUM]PZV@(ZBOI!TG@L?0N^%A3@^HX:)X?K &M%52=0UH:T![3B9=+J!M]8N7
MX)A\B&,/RK.K4DU<W@]*[XB-Q!A"R:P]V'S7O1Q6^]W37O5HT.O^0C\>7[C;
M/WT['-QK2^*JT9.'C53XA/[I^=6O<VG8@WX/O_BQT4G,W:(H^*HH))P*,"UH
M9C=M"+6D'[3/RA(0L/!Z9'2NHNJ]6T5%HP5**TX_G"VEH#CZ^3U>^_]$X&]0
M2P,$%     @ 1(@#4[/$UC-E"   _#\   T   !E>%\R-3(R-C4N:'1M[5MM
M<]LV$OX<_XH]=YK:,Y(LR4[C2(IG%%MVW4MM5Y;G>I]N0!(4,08!!@ EZWY]
M=T'JQ6^)D[2JG"@?(A,$L,O%[K//+J5.XE)YT$DXBPXV7G2<<)(?\)O_-5[5
M&XU&#>]V=HI!O/NO:A5.N.*&.1Y!,(%!DJN(FR.=<KC0QC$)57B]TWBSTZPW
M&[#7JN^WFC_#Q6]0K1YT4NX8A DSEKNWF[F+J_N;Y:AB*7^[&6N3,E>-N..A
M$UIM0JB5XPIG.RYYEFC%WRJ]>;#1V2DT[@0ZFH!U$^F7*U>-62KDI 4O/^3:
MM0<BY1;.^!CZ.F6J&*R 'ZZ Y4;$;?#KK/@_;T&CGKDV9"R*A!JVH"X4U&L-
MH=H0YL9JTP*6.]TF#;*'Q/YT1^!/=V3-17E)*3-#H5KX)[RN-7' \1M795(,
M54ORV*&@ERJP6;NSDQUL/"+SJQZUU #\Q8)T,&*8D/Q.<-"[240@'.PV:LW.
M3G#P,66^W ![>[77*V6!$!V/F\($A[W^X/3X]+ [.#T_@XNK_N55]VP @W/H
M7[WO06.751M[6VP;SOO0>!5-+X[A4_;Z^U4?_-*#R][A5?]T<-J[A-X?A[]T
MSTYZT#T<D(*--[M[E150LWL)W:/SBT'OZ)9Y47-O\MUZ<X7,V>V_ZY[U+JOG
M?[SO_7=JR6:][L/CT_[Z#05)*?ZT K_J1$&W!O]ADPI:S#@13\ ES+6^)U,4
M(P*SHG(M:)*&FP>-&IQ"PD8<#!\)/L;DZ1)AX?><&70L.8$^SS!]@E9PC#D0
M)55_!QW#A=%.PWL6H#ZG*JRMU%.MGIV;-7C'+%H7[9A.X%KIL>31D%<*<YO"
MR)%&;91VGEPPS/!,32!7SN0<'P*I38I[DO49ZH#'(Y#5Q"S$(0,ZQ3R(1^+G
MW9N@>,BM969"4U)VS5'NPIX6QR)4!D5*RJXD@R:$PH1YBM,4+@?/J&"<B# !
MF]-_\_5C;GBY"3U *JQ$&H14!<;")?B -D/F1-)IWPQ5TQ$^Y@B7>;ZV8(:5
M.KC5<Z7=C[@2AU@H/"PZ]_GA5-"/<#K>-@OWA2I(+;)9_#N4>81[H@,LG$0%
MG4<0"&1X?N1ZY))2SGVK/%9[1S2Z;R1HXPK-R"5.0(?2&=%S'+5>GY#9!&*I
MQW;J;88/A76&H2!&@X7>J&5EP6GL5)E[VJ[4*:V>W^S5L"A:-/++'_:;C==M
M6WI&F1@I9'4<"[STYC\%9K@_:#PX$4A.!P(<O2N0PB8TG::E"%<$670="1M*
M;7-<1T!FM"Q./#,ZY!$.6]C" XXX>DQQBKT;++[4D$,7,:*?2YSAB>NK+;[M
MEWKF2E?%I2#6HPI/H_V!@&3! 0N'(%V>+"B^)2A&0?2<=]T29U"V_$>) UF>
M0Z -HO';S3J6HES*LC"<7=N,A=/K4L>QB%R",NL_MA?]H][^"N6QW'RQ\0*K
M<X-_T&<TE38B=PJ9+!_$Z:Q=*/#F1[\*)_^UUONXV4C>CHN>K.7N\K1DVU^D
MX?[^\E0\XA:O,(1\VO]T?%>(D80LMT]?0M0@X!BKI:2";.C<X :(_"-A?3[!
M65SY?8C SS/18C8S7#(?_"7;F =PI<QT=%-@5D)=K)8B\ETCFP=61((900\@
M"D[D\ZNBG7)+/,5CI?6DQF<?;3DJY##;T:*,T6'EDE'2Q,?R2LSY#JXHV-,B
MZ<._ DX3,:_A>A[=<UC\I/#:P$\*_;\!>':?U.-9 \^W!3S!<P.>)Z?]>_CS
M=,+P9!A"Z!J)B-"%6:U\:#"+R$2U$D$.,]$T_!&0! N$%&Y"7/<AL02&'BD\
M"!0X=FOJ0JWE"=A-^4!9;C($(>NY>1AB<'H%?-4U]!UQB5B$=WA&($=3L*(L
M\ ;!4&3(@=:(LT:<I6@9KC[B]$9,YIX/4#CR.*87/B,,)/M G3HKH9[ ;XK+
MATM7#S"X$+F)+0KD0.?N<0V>PL#8;#:GZC_^=.,%@FE?P6,F+RR!^K1I\S5&
MK#%B&5I&JX\11T7XW0]CZM>6#09_YT&L^ PN0B6.#L/<4+ NU!,/[)IJZW"<
M7@CA7A9-!!^*)CYL/;(D1M1!EG!G=JEXB%C@6\W4A5;Y3*_M0JN$V5GQ1?S"
MHQ2///'R]BA)T02DN.:R[#O?F5_Y:A/]0\CTC-[PO/K2MI]_*Q1-/;TR3PZ4
MJQ:];9XGR%\^@Z/?*\]GJC$LT9TV=D:+_0!NF:;".<X_DHD#C<2;[D<"]?.;
M;*%/8N*SE%CQDQH%TT#B'W*!ZON@R97_:H?=7G?WUNGL>^KN=266EW@M,/RI
MRTW]\E!PC->2MLZZ;&/.KHF'%N6F9Z*^4/8O(*>O=SX+!<J&6/&.X8&<P2)<
M:/DL93R*&&5YC4LP[#%Z*@49MF21/,7G1UOXARE3]8,OPM9$=XT,Z_;; C(@
MGXT-)M\*QBGW? $CW;_@+R&A4M!!H49:CCAQ0L6&Y?<43$DQ>)I)/>%X=YSH
M@E>P6X"# /&7$.;:JC+!9QZZ>S_7EEE=H6NUH)L/<^28NQ6@+^Q^1J0$VCF=
MEIK7EZGXU\#.2NOY3$W:6(*>TR\COYNTOEV#%L!5+;1N^3>FT,ANX(>Z_]>>
MPL12O7C'[BQ^L_,1Z%]AG/M>PG"5]7RF)ET&LGU7)ETN=*UA:T557</6&K:>
MDTF7"UN'B> Q',_J[O/B?<$:PE9)U36$K2'L.9ETN1"V=5%\Z0W1ZQZ.W6O'
MKDKW,!(C""6S]NWF^^[EH'K1/>E5W_5[W7_3K[T7[EZ<' _Z=\:2N&KT^/X@
M=1SAXN3LZK>Y-)Q!/V!?_-CH).9V-Q)\.Q(23IV/%C2SFS:$6M(OT*?]  A8
M>#TT.E=1]<ZMHI70 J45IY^MEE)0'/U>'J_]K_[_!%!+ P04    " !$B -3
M,N75O/@$  !V(P  #0   &5X7S(U,C(V-BYH=&WM6EMWVD80?HY_Q92>W,Y!
M0N(2Q^)RCHR%0^H  ;E-GWI6TH+V5.S*TLJ&_OK.2N!@U[G4KFWJX <+S>SN
MS'P:[7P#VPKE/.JT0DJ"SMZSEF0RHAVZ^,-L&*9IZJAM50HA:G_2-#BFG"9$
MT@"\);AAQ@.:'(DYA9%()(E @_V*>5"I&E43ZI;QUFHT8/0!-*W3FE-)P ])
MDE+9+F5RJKTMK:2<S&F[-!7)G$@MH)+ZD@E> E]P23F.EC2B<2@X;7-1ZNRU
M*H7'+4\$2TCE,LJG<ZE-R9Q%2PM>G&5"-ETVIRD,Z 6,Q9SP0EB&7%R&E"9L
MVH1\7LK^HA:81BR;$),@8'QF@<$X&+K)>!/\+$E%8@')I&@J#^*;S+Z\9O#E
M-5N?3>66YB29,6[A1]C7JRB0="$U$K$9MR(ZE6CH!??2N-FJQ)V]+]B\4Z@K
M#R"_V; ."9N%RG[+ZSB+D'E,0JVJFZV*U_F:,[<'H%[7]V^)P*,8O1_8?<QV
MFA2X=YVQV^_UN[;;'PY@V(/NN[[3 ^>3TSUU^[\Z*$*M,P9[<+32]?H#>]#M
MVR>7NF\]L/L/8W0ZGIS: Q?<X19X8[Z%4WVB=W68.-T<6+/6,,I;X)D] ?MH
M.'*=(]@NR-9 '1AO5!:Z[QR8V.-#>^!,M.&G$^=WL+NNTE0-H_I(_C[R:[LR
MWR_C<AY-)!R*0"1EA#&1;+HL0XSE(R-<@A2PD8)%G5NE($F!!")6M75S^'J0
M@E],0884)B3Q"*>I-EQ$= FV+Y5&P5]&/9'YH(\92? 91DL8TQB+LQHR2@2N
M>$(\#++/?1UPW1Y678Q/^XCQ)OG,*4M]+.5GQ0) L<8'*V0)!$0237I1)/QV
MJ;$P2Y>2HH@W:K7ZAO"\7:H:)6!!NQ31(%?V%#DPJ_OF&[->?X/_:@<XI/,^
MXQ1JB(-2MRJD ],L0N]],8\CAD_K@LDP]R^A9QE+Z!QS-%51?8;Q%7D-&(39
M>!6\O@2+8NUF4JW@+)!^\!E=(V8>U.I >%" QGA!0-12BG@0QO%1( 5(,S^\
M <XKT!&F5'%"T]PKG$6B"!,&IS#$$N4Q>IFN\.6$^TJ,9@*6&U1>X* L*D(2
ML6)9J$AO>FP_ZOMUA'!:8&>S+$4ZLLZ4QR,&DG@1!4\D2(+;)4QSGT;1BCU>
MWJ<Q\=?W*Q\O6"!#M&D\+RPP?,.XM(SF'9Q'3OIL[QE2^ 0_J&NPMG:N-B%\
MH5>!2!$W"P<:^WKM>3X1Q_^W 'X=.66O(H/O=K2NFP_GY^'2^A=.>D)*,6\6
M.: 5=U8J(A: &2_@9R/_:ZX",?7JE@/^G8'4]O7ZPT5222M7"NOUF/":9_W_
M,OE]H;8(CG6R]&VG']+G =;S6[P*CY$@3S8YMFIG=-470;?.B.W>^QXQ>4?(
M^Y@B #D)[(:,3I&I(FN5[)S"<#IEV$9\(:OW\*I(R'9]-_+C&+WO=O*]"#G8
M.OQ&ED^IFX1=([EK)'>-Y*Z1?,IT:==(;F4CN5%2GU2KL.LC[^[J4\V-K=H7
M=VWDO?A:-(Z]2TIXQ\;QX>A?P,[!CTB:MDLG]L351O:QHQV.'?L7=<YB0SLZ
M[KGC:[)PJB7BXI]"19A@=#PX_?#9&HY01T<V+WNM,+E*IB!G4Q!2=0#"@FJ\
M:*JM59W]6)<N\(C_YRP1&0^T:ZJBZEG !:?JU].5%32G3JK@?7[>YF]02P,$
M%     @ 1(@#4P9\-C-C$   G<D  !$   !P<FQB+3(P,C$P-C,P+GAS9.U=
M2W/;.!*^;]7^!ZXNFSW0DNPD,W;%F?(SXRT[4=G.[.QI"B(A"3L4J8"@;<VO
MWV[P(5*&^!)H2Q8OB4P\^D/WQT:C 9*??GF:.L8#Y3[SW.-.?Z_7,:AK>39S
MQ\>=[W?FR=W9U57'\ 5Q;>)X+CWNN%[GE\]__]NG?YCF%^I23@2UC>'<N)\$
MKDWYN3>EQN^GM]>&:?3>'WUX/[@QOM^?&?N]_;[9^]GL'9CFYT]/OGWD6Q,Z
M)08@</TCN'#<F0@Q.^IV'Q\?]QX/]CP^[N[W>OWN[S?7=[)N)ZIL>8$K^#QI
M\#3DSIY/K;VQ]]"-"KLH,&D0< [C6M4B*LTTL2E3UX:";$7!33&?43^#7S;!
M$4!Q%XNQ3<_L]<U%2_ID3=0RL"0CQ&'NG^K^04,'72P>$I_&U5W"+%_=M2S*
M]#WCSC#3]XQ[PG/(T-^SO*FLVOMXT(NK^\Q2]PP%F7Y]+I**(^(/)5RXV VI
MT#</TE67=)AN$!:IFHD97X$%2C)@ M\<$S)[WG]4H.@=2E9@BDL4C1"%+;*@
M(C-]Z(:%Z:HLQZC,Q=O.2HSZ](P$T4W2/SP\[,K2CD&$X&P8"'KI\>DY'9'
M 32!^R,@#ALQ:L,-[M I=46F0JI8$#ZFXBN94G]&+%J&&> .#$/>TVPZ\[@P
MW&>M<V[1T ]<>Q81T@MA"S^O2?R'B7_L@=A.MRJ"]%U02OZB0?BSFNP\XZK$
M*YO@7V;<SL1+9G\?J%<:12[G<[6@;-FECO#C*^:BK^IXEIU".2QQJQ '^HD:
M&%:X]E*<B*OCCS6XF/)5I<0F]>6O=00G#KN<W*@Z_J@A]9D7+$G\N $R_D.]
M@::FTU(C3>K+7]7&FC])K'&7R<[6IOA2K%/.]Z;;)'^MX0&5,=$J*$4MY=]^
M+:=3VT#/74]MZRS3_;#+/8=V73K&P+K<7>)PGFF%M\HA3@[]C\LXB.MZ0G8E
MK\579S/FCKSH$ES$8.(HCBIOZ<B0X<41X1;*R0]"NA ES"@7#%2;"DQE!Q-.
M1\<=C#C-.'KX ^*)/8APXBK/!&1G03E.:$*=ZP6\N"U:X;CC@[(=&HWZQ8=C
M$:?J<*")%3C2*ALZ*)N.J@X*FC"7;?"89IQ6'1,T\2%TKF4I[. >*A@,5KH0
MQ D9A9NV9P7R!ZRP3?B?B;F)]R*?2BD= ]M]O[TJ$8>'&,MWG0",(2Y,%BXY
MRJPX/_=Z/5CJGT>RTC]/7-NXD&*-JX783]TE6<]@!#ZUO[F?Y>^E6R-J'-7(
M:YBE7_EVRR96MXRNQC8M9VK+<WW/8;9TT4/BR#C>GU J?#.<584)!&:>;08N
M"6PF)X#Z]J\E3Q<I^L"$NQ@*_#Y+@3%.0S#&G01CO#L+T1@#B<;X'J/Y5TN6
M*L8S9P2O3ZA@H K_I;FS+%X7E?:U4,EX-\C :[D5&C>Y[)O>"(JF('A"79\]
M4)@MX&_:@#>J)%07CP[R>)04^(8W@J(4(IB]$)'QKO5+N6;T)W"#33S'IMPW
MZ8\ XXVFJ9,O4Q=SWI=GSET*T#^-"XFH94Z1 R#^Q!PYWJ/?O*]1B=+%DP\5
M/ S@,"X11\L.-)GK"6KV(=3PF;136M0Z5,CM5Y?=/^*RA_F6X_D!I_#'5Y!J
M8 A\BG+1WH.4W!VW\K[)J277I9;<R6'N&,SBN?#;"F^0M0U>0H0NV_^DM#W&
MK+<2@G&20  2I"'L. T.3)>*.-J#M02&@5//#:?TM1F0W[LNX_^L-#X&FE^I
MB.-&6(I@0 G2P^A@Q^W^WAP&/G.I[Z--ALR5DM:_YU?UJ\O6ATI;8VAX&LE%
M*R=R=]S*'\RQY]F/S'%D^M&#=3>'VU$0=\R&#C6)[U,-CKZD&$T<Z/>4',"P
M[TL$PP 8QC>$ ;=_#,,XD3!VG!(?S1%AW'P@3D#-*26H0CW3_>J>=1F^KS0\
MQGV7(-GX#24;-RG).V[KG\PIX7]20? F]*D5<(8;,VM;>E6_NNR\K[0SQG@W
MB5SC+I&[XU;^&5SM _SE\?G:EDWWI<N:!TIK8M!V%<O:<0L>FK[P+*DP6^9A
MJ>OK67.O[EF7==\KK7LH<S @V92B92HW%KWCQN[W<#T<3'%0- Z6E,EW4.GZ
MOKJB.%VT^*!.QF#H=K* $\5HZD3_->#9^5Q</[:.($\:9N[E_G29>T7NK2^=
MO#3G/<K;=6ON0[0TEG]SBD?1F#M>WZ2J3G7959U7DP':72C4N(V%[KAQ<W-=
MIHQ9U[]_2PG19?Q:>37CW;U$L>N>>T4B3!<1"KK718&*Z;;6^%428KJX4$V:
M)FKLKY>%:YE2D#3318Y" ;KX4#DYUU(@-YNFBP %W>LR?\6<76O\9PDW7097
M=*G+R"52>:UA"S)ONLQ<*$"7T:MG^%H.U,F]Z2)&/:FZV*(K\==R:'5Z1QM3
M<OK6Q8<5F4%E!JFU>9DL#][*02@<SU+BH4I++OQLY@1XQR\U#EO9$(*Q]1Y'
M:1R;+LZILY9%B2M3NJ,(/9X6Q6.CEES$GH?HEYM'":_S$/ZNLW952BJRKBGH
MDPB(TUCJ:UF.+C:ITZ Y.;"(#\9]"*3EA=I>Q'&B!^KED?" 6Q/0N#GCS*+F
MR.,FA @0R?P(F,_B6IS,F*W-ES6'3!?WJN9?(<A*L,L#[Q%V8X#8#<!N ':(
MQ!+L6.L6L;=^K%HZ5;=;JRE6$],.UDWGMDZOCC7AYG3'U(<2Z5,LPOD<@W R
MQ:<5T*\DW>AR>LTATT5%=2:Y-!4AC@NQ&\R5WNXLPFZ<2.SH\9*.6J=7B17/
MKX0U!6C\U:A:#90NEJH3WA58^OQ:6/<>8+<$K4E0Z@LVE7DO,A[SZ$U,X+.X
M8'^%$1U]PCREO@5Q8\!T$56=M*] U(L8NG&20$=?FD W+D+H+5D+-UUU1XWE
M)>FBDWH[('>?MXT-2]HL=1T"+$!/7(L1)_8A45UP,JY)\.':@'.,R<+GJG4Y
MM(;AZ>*A>J,ACX>9$@@"+^,!Q*XNJFT; (7@D\/A *+GQUOGEG^@P)_ C" H
MG\IYT/'<<?C' RA-UL7,B4^RC721MA%0NJBJW@-9?3;"-.X0MHE0Y=Q\[>'&
M#/YU$@.7N9P[LG2HHJ5H+AOB=VB!]YI0QQ8>A#58-@>3#T6FYAS?7R(XL7#&
M,E/UFN6K/H2ZR*O>3,DC;_PV,'"QO\(83.$EZ(QS&$6Z]G".[V>)1P%=1O5:
M)C\_S+/XI8N%^;WK8I!Z R5[:BAS@JBU?<$)']VKB/*2='%"O;&1?ZBH74:4
M-)J\;GHS^0=X5O:@<^JJ*U<3==ZK=RIRJ1,5&=\D-.,D@M9ZFD*3PM(NF,["
M;5$4%^\'#!UB_>E;$^C4CRV.^Z.XWIMZ-M67!&X2FRY*JG<L"BAYLH!O?,?R
M:+OB%.&;=R'^F+*#$+]Q@_A;WA9R P0+4%GXZL&%5]*WX%Q#M"[6J7<@"EAW
MFZ#+^,1V[5ALV!GE\@7J\BW,4L/-DVFU3%TL4F\/%+!HL( 5T:BE3]WI"A.J
MB\-&K\"Q-8'I(F*-YPQ63Z*_Q=CE*:B6K>NS57C)'J9D1W8S *]0?S9[#;I6
M1*:+K^H-B*I\%5ZRORJ)F]VBP"L7=X-!2]AZ#[>HRF6!+IKJQJ.+G"L>NZC^
M&(ZIK(-E+2?5+]71GITKZE\79U:\[&7Y)3YM(J[,8U2</E 79J 1]Z8F?A(K
M.EL^G$>5HIV?L)TV=Z0/BBY6J;/_*QX P_6I!&M< EA8F\9@<:/H-@&;M&Q=
M4([=(Z>Q;/9&N58@4Q>IU-L'*TD5N:]E3K7LR;$DGI5P8*ZWX^,]X"[&U!MS
M,ILP"RJ.4_M#S9"I&@1-W/J@WE]8R2UY-D.BC(\1@:OZDJ"$NN/T[E7+-86A
M;>;'IV*C=$,\9S7*KV*QNCBEWB!8R:GS###YB%8T+>X"C3YUES^'&UW)?C97
M?C27.N%G?H $\A#)<4?P@'8D\_!+HW_(1]TXM0_L7X.A?T.G0\H[\A/ QYT5
M9<R1)ZSBKGPH$TP$*/@+]X+9<0<-S8X8$*QCA-\;M04//S]\9'M3PMPK*,,A
M=8RP;OB9OONP;A!.0.E/ L?C2'#'S_>E'N\;<.^!^?"#.*E/>5ZA>8BS^,")
MG.QF#A7TQ/Y?X OL%S]T-"#,CD?>6.]U=!=>F7HN4)O/ES47G8@Z[EA@*28V
M1:&>+ I_^<R.8HJ&]+M2V*ZH^YR.* = L "]9F3('!:^R+X);:^4M57*OJ66
M-W;97]2^LJ$N&S'$'D8HL=\[<>W4"&5JDMH+LL5E\^ASGCGJ;D;:JRB<N1 Z
M@/A7U/=7S[5>5.49@6]-ZW"/.X$-(XX?=U)J)6QS#P&&LZ;2Z\AK4.<V'596
M^<IHZNSKV0VQ)A 2NN-+QGUA!2(;4^76>,W(:N68XD^E@YDNY(?2K])??@]'
M55"GOOGP, 9,0[K'A'M&6;MDKFQ$A'LQ&E$\B$?#[ Q,M[>P9 N]4P!*621J
MH *GL)(ZI]'_ 2KM?D+#[TLG0]38X7H: D'XU4']9H58Q9M3*C<8XW=[#.!&
M7[)U8;7-(, JF-_ D&B0)?.6KE[_=HQQZ[=<P+T9C=;Z2]92%FV$A2YQ[4]E
M<FOQ8+"<N?")7SQ$EGX,^&0D*/\O)?S2"Y+1K=?%ALV+B6)"#X/YY(53.9TO
MLGXGX%;DN^QPB^S4 <+&^JC5<CTRB+@G[:R^<O^''M=S;SP'(YX!)N2F\#O+
M\.)J&QD8_)O,B*N\994E&SF&Z^B)1Z =QJL/TF'N]_K[V0$55]O(T6$6]=Y+
MGN--/NX=)4GOXPWX<)"E:V]<.(?(?15T/SVVE36V:#PG49/B<:5J;MSXY)$9
M\')V8(FEG+.Z:"-F^T$8M9(Q_3:Z)WQ,Q=< \9V!MP-PWT:G%)1U0;@K,PN_
MX:$[=WSM/5)^S:8LL9F&?AH/O\M,\O7&\7TVTZ*/3#\;H8\[:T+M  '+%Y_*
M\XT#,I?KXD?";?F/+PF.[S"2<7KT=$%R'#=U_E$='S4MY)5#J84RD]&E3XB>
M<(ZO+L.JIW.U BY^!#+_ *Y'IB06NHC4D#KM'+X(+5'MBXI<PRDC"'^;-/P?
MRL837,H\0$@_IE] A#B'B0H/\\JSO*]@@C*8UG8K$JSVZ?-N0BG$U8(XV;E3
M<7TCP]([;R3 :!A$"S3*TBA6E6[D6.XGG-+S 81)0F9T75C+NS0[HH(Z&SFN
M[YB6L&4XZ2O7>'D5-G)$BQ,O39^9#Q7T@O(V+L#7-?;X0PYZ-9KTND5ZJWDL
MK$AQ=;O=<LT5'?VMH[;"/K=<9Q4/O-9185416Z[1FL] U-%L75%;KN&R\T=N
MV^W10:,?QBG08;.RWXH-2A*R9"?;HY4&/W)2H,HF)6^__DORL;#Y]FBBP2]/
M%"BQ2<EO3O\U7E2O1_UU!+\Y[5?\CH4>S5<5^N:T7M(95^UM>_34])O?"Q3;
MN/BW8(F2)"W1P?9HXP7>EUV@SI= L/WV6.\5^S5-L*;0[==Z28]0V'Q[-%'P
MUO$"112UWDX]E&2!LLGVC+C1-P$7J*Y9V6_9!F5?(:G= *4%OTGM5WTEHC[U
M5Y;\%O3?!+'?.F>+WX-=6W4ENGX+&BSXF$)M]17U^Q9T5S)F*M'!BVDC?-4,
MQ!1T2N#/_P-02P,$%     @ 1(@#4P[$!;>-#P  S^4  !4   !P<FQB+3(P
M,C$P-C,P7V-A;"YX;6SM7>MOVS@2_W[ _0^^W&?52=/N;HMV%\ZK%R"M R>]
MW?MTH"7:)E86?:3DQ/O7WU /6TGT&#U,TD&!Q3:V26I^0W)>'(X^_?:X] =K
M*B3CP>>CDS?'1P,:N-QCP?SST?<[9W1W?GU]-) A"3SB\X!^/@KXT6^__OUO
MG_[A.%]H0 4)J3>8;@;WBRCPJ+C@2SKXXVQR,W &Q^\^OG]W^W7P_?Y\\/;X
M[8ES_(MS?.HXOW[R6?#G1_6_*9%T $0$,O[X^6@1AJN/P^'#P\.;QZGPWW Q
M'[X]/CX=9JV/TN;J5R_<=L@W?C],?MPV?3'TPVG<]N3#AP_#^-=M4\F*&L*@
M)\,_OM[<N0NZ) X+%$=<18MD'V7\Y0UW21BSL1;"H+2%^N1DS1SUE7/RUCD]
M>?,HO2/@^F"0L$YPGT[H;*#^_3ZY?O+,E> A]\E4OG'Y<JCX?OS3Z?%0-1T"
MV2%=TB!T AY2YYTSC20+J)0.M)VR($8@'>+[*1J'SYQ5)-R%HF<EF$N=&1=.
MN* .<?\7,<FR5H*LF.=X-"3,E\"8F,Z%H+//1ROA3YV,$ 7EG[KI"#<K6+J2
M+5<^/1KF&.D2WXW\^!$W\#EMKGAE+4\3+/0QI+#?TE61P8%'U'!>??/?LY3"
M\QV!$^KR><#^HMZU!UC8C)&I3T=2TE".%%6">J/ NX&OF0\$4@F_14OJG7-H
M'<RA3_;;YCP2 CYG! /?J)_0HOG)":MBOG.1SKM=K/K& ]<8MUX^W!S#K@/7
MCY3>^<*Y]\!\OQ!$TN>>A\3OD5^MG]V$74J:R$Q1S8B<QE(_DLZ<D%4L4H;4
M#V7VC9,HS)-4^/\S_;H((LRL9)[2Q/#A7I! SBC,JG?RC$5=AK ;Z27,8[BY
M#D(JJ SE-4Q8O O4'VJZNS,"^P0[^-1>2"3B(&F)YUJ_SWL=/,S]H(^1!0\]
M<&Y>T&0#WI-'O1RM?O"!<_4:3,<9"UA(;]A:?01W9LZV?36P%TG!@?-9[Y)]
M?>MT9Z'JY63E<P^<IV-P-,4.H+8=7_G<P^%II8_PC3[WXS0]S0#_SHE<9&1>
M";X<[6(7)3Q ]#" (V-Q"='/?S9 X2W9J/@2^)XI][+%1.47P679YL5VLPL1
M+.KQ++]2FJ,K':(*:2X2.!+N@ OP C\?'1\-'BB;+\(T.IZ,0X3[(D3X-)";
MMAC"/ETF03^P=)99_QDL?E,A"VY,N@-/4#P_><T\+Q8G6-:\?<VL,>9>8+E_
M^H/[G<,Z6%[O4_#J\KWVQ%V$<V*#J#UP+M=%U&P0V1I9;.STS@;A?.!+&1/*
MQ++YW>M@L\GCU18JT+&-U^BXQ)Z6]&O6?$UX:_#8VR9+KE4P@+<-E;188_O;
MP%VAHX-R-LUWJQ0&W'S7!(\LER^-N+"W_(<=DSX-G_/H!C[WG\GXWIFG0LPA
M@>=P%8URV-;K=T@LQ1R@G2U5QJI#YG-!Y\F?2RY"]E?";?JXHH&D+1,9]TV&
MQCQ&/5 ZI3%>Q0$>OR# <PG/=(&248Z0T0P6[W\H$5<\$D798ST,9R"4?E4>
MY<J3>YG,PC=@^/T#]=?T*QBLB[*C@WX&M9X;$[HD3&6MCV=73,(>4O/9"TLJ
M1[:>+R6[I)_!#@+]/3R_+&VPXVB'@?^!]X=^-Y9=V,M/ZW&=[#I.;$@[[W<_
MVV07Z^! P9:V*2*,9T&_IH]-T=I]+P.$CK<IJJIE5SP7]5@&O'\%#*@V@_7[
MQ#\[2R+^!*]+N6N2NI&(XWK.E/CJ\J*Z8+:@OA=RX)SZ;0,NVC1\TG+CN !%
M$#>,B._DVK5QCK71H]%+UHP)YR[W9#F-UD"  G;%Q1WQZ=V6Z O \#4AE*F(
MV6,XX3X0,,\O_RO"Q+^)'Y69T7T/;\"VQ$)(R4\E))@./)HOKD"L],4C_ .L
MX]+N4RL>O.QNIU7>& 7?_RJPR6;7P9]FDD2_PO[%8<$:/G&QR?W53MFBQM*H
M*!O0HU7)76>T5&52%S<R($JWA)2'+HJ:F*14[:ST2%I2L2X5\_4=[!3LA?SF
MN+5CU4$R&DC-!.F7FZ=.0$.0*M"0.BLJ5.&-)6"5"R*H^K"*P@0]F.-3(ID;
M'VEYS(_4:=6SSDFO=E)7 R4:9;8V-)HEOBMBD,0_C_'<*<+D* P%FT:Q)W?/
MX^_.B*1>FBHP$@+\_[A?N03K:V #\OKW6+Y0;[2F@LSIMV@Y58&MBV0N$R3C
M*(PK08']5,*"EJ/8@_<%B6=J63=#6SV&G5JL[<3Q_2U_F[R3'MC38;'HUZ@_
M.3-PBIRU\HJ<)24R2J96YK\'H3]C 0E<1OPL'21MZSG 3N((Y8@) !5K!]E2
MJ>HA1J->U0E(JVHM3BA+\Z*?I)9MDZ1+1&N'D0PHDUS6[#:8<,&DZW,U7240
M<9WL5!=(VFMS#1M,J%8AZ )!W&=>G,V6Q?+E@JI-F.;T*YN6<<^) A)YP"D/
M+]6ZC*Y'3'6G4.])A>OR".0GV!3*S"BN/XAK;"(^GA(TH2YE:T43>. X#%5=
MS" 147RQ )R^>_)(92V,ZO;F,.0O0@3)[?;Z$C2-^IK!%BV5D$COZX,P7@FZ
MH"!]US29A1LNDQ1XF(YRE&U&,8'7\^*+#,2_)0R6V3E9L9U[$G+WSS*(Z(XF
M4%55[#%>5B<AH&;?%[6QHP10G5%2#:S[@(?!A=*RM;V.::JH4>"I?]25%W#%
ME%\V"L^)$!N@ONJPOE%?$]AVTJL21DDS Q1G%Y>W!D).C9:?@"%[&<!S"58[
MWU!P3F+MF:.K6JR@^YG)KU;>P0TEDB*E)*:++4AJ)1VREV$\$Q40&,^^RR1]
M$8&EI,>/ FW%1TJ9 [/SR,I/B<K;_D@IP$79ZD-J=M )YD"L2!?<!WM')K=H
MZXFO[&864;5DMTHS?=UFYNX2PJK)1_2P!$>M6L)U,H!FO(H-_V#>Q&+ =;('
M3>WTH/L9QX2S'%!]3&!1 :KTCD?MG%2U-44[_LYB77-3"/+>%VH**CN8*%8K
M4H>RUG6N:&F&[A5A7GH[*8M$8^)S#7H:P<5!VH2;6Y\$(1"GS*.5.K8JWQN8
M+@:03-2)?4"]2R("D)TR%UF_H#/FLC(\^(X&4*$MWG8VKL$['(4;H"A%]L6R
MLBF9J18&_G31IBO/M;!:Q&=MNLY<BP_MO=AT*QFQIVKC)39=,J[%TUBWVE1W
M[=GI8LWBZUH 4Y\P+$+4P*6Q3PP6 >I6>EZ?B"N<#)1S8Y]@*U2OW?>Z/DE6
M+,*PUC06ST]&\:"//;!P?C:_5ZKC&#;IE(J8\5.;M&EJE4UJ!@>RK_01F_01
M>GIKDS)MTE0X5 W/[6U27XUV95T"ITUJ#0>LR8&#34H.APZ?@&&IHD"#.@07
MI 97HW0F2R5_3\JNZVQJU@P-!$M79)I50A&ROK2;9B50:D$CCJ%LDHX5P?0<
MLJ8'!S;)21S"3K<3;!*?2+@-;RK8)"IQ"&L/56V2D3A(U2G6-DD5=%(:1_'
M.IG2!A\BX*#[BNKV:ZGNC;MYD9>58.EZ3[7-(PQ<5FU/IM8;J^=<@OY1$?EX
MW5&Q9BZ5=[#T,J)>W,JHZV B,YL&8,VJ]T:-O"4+F R5;;NFZ>%6"11D+Q-X
M5(FN6\%GI8D7!2V,Y9LK,T:]L2GQFB(PYU+G O;#&9UQ07-QF<M'X#((5O"T
MQ.8:MDALU*K"LTE!Q.S5/B6X-3S19-Y^NO3.8&66SWU-:P/T@Q&[FY@2J@O;
MF,PJ3;E71F]I.Y,TUW*YHJ6IO$O8;?PI5=5B&=?)2):<I&!:J=R="[JF/H_/
M&JO!H/H8P;*F040S(:JJ?O_.PL5Y)$/@M=B^DE$=W\%_7ODM_ XCF<@)I+',
MA^E($D5V^[L$7GV'3CF"^RNC660A\.9VG$U.4@VDSBO1)H>W7/WPYHO3IDE$
M 6MDFML4+$.A:Z 4K%R2!;8%1[@F+5;A_L0C$DR-%6C3].APC8HX4V9IVB1T
M=/.F@0G;8@GM;U<4.VE%6=!5OJ=-,X]$I"&B8$U4ELB%,_/Y@^P[%ELQL/D(
M;"UQNBL%"AIOA]S[NU0A7YGDGX%I<"OHDD5+J2[SR+"JX'>WP:RN])0ORWR^
M4']>*Y2 :CRKR](X*6&7YJ<;JA[U['H1V)RA8.H-BNGUHZ=?Y%K>QO4TXRK:
M1-(+FOR[]9XN']V8$Q/879>S&77+PI1FB#!2'6J:>S'0\Y< 32CQV5_4^T)8
M4!&X:S>(#;6P4#%K9"\C>%:"NBS>O/"WGPC2X,F+1DM!X;N:J/(5;XSQ++]9
MQD&G;;G=@*!;5EP2'YR]:*7\6*5K8M.)>CO+J81O]A!FN!K6K6"!RU8J9V93
MI>!1?<R<6SV3S\_RY\M/L'#]K,*$*:F%[FH+LF=I\RWFK7H$*W!F]^'+*W:A
M^EB!)8XM[+)W:VN1M1C!"ISI_>3,<"B\IXR&W&0P,^?G2I_="KX&1\([VWR7
M:D\E8E\%^-V0K:LFN?D ]J!,7-(.*"L&L ?E=K^U15DQP(^,#U06@@H!-4E
M*&UOHM90:NR!/SBAJTB X2RI"D+459#'=S2(*KV7>,_!@E!'MBKU%5:Z<GZW
M[^E2^?,P"57^6-?A#'+@GH]<\&8$K7Z'< WPAJ/8@#<+QM'D)D3LYR6_E&6@
MMAG"!J1IZ8BZ8"ZZGPV82BLP8,'5#F"FKIM+J1>?!UU+&2G7.WM!WO? BS-)
M@$*V5@9DL411<'8QB5C,CE=5(1$MSS3,R]T+T&-S/%D)<2$LWY?C6;G,0O"L
M\]B&>:.(&L_^17W06BF632,&X 8PD7'71(.WU\_F\BY:V.L<921;=HS> 63S
M0+E-.5W=L+>.O]AT0[)O%E2&>UO<H]QK1DROR)M'HFRZK[Z'=8 )'[>H;'(X
M*Z+NC  +_N=#!%\:9<>B_L5^U,AX$A;Q!_L1]Y&0A+9^="5&=K)_VB=WH/E@
MOQEH)/$*S3_[34F,=X2&:[_9V"AGR+8TZJ8'5?E"(RV#9%;=K^B9!>@8[P$X
MCE@>M(SN'(#?V((#/07X#L&W;+M'J@\*6KB1!X.\R7&735>V6J1ME&R//9\9
M'()JP7*MET/B%FK&=H9@,P1:Z!=;H3?(J[5);!BZ6<$[R6_KCC2LY6)MII=-
M-JZU7*S-?;3)3C;/1=ON9&B]+1OPD#HGQP[9U6QUN+*FBPOW^5S*PM_C'SQ5
MVM;?PJF_4KO/I^NY=[M_!%HOYXY=EMSYGE#7)U*R&7.3-9I5ZQV%L.2G4?R>
MJ7M^2ZI>)=II,%/ILC75BF]56!^D9 ,V]#.JD5)93^=-N5LC[K*TN'@B?5LL
MC-[&M;0 55\SSO?&,INLT3UPJP_)@U##Z0_J?U.P.^";_P-02P,$%     @
M1(@#4T5$9#@\/0  *< % !4   !P<FQB+3(P,C$P-C,P7V1E9BYX;6SM?>MS
MV[BRY_>MVO\AF_N9DSB95TZ=N;?D5\:[2>RUG3GW[)<IB(0DGE"$#D@JUOSU
M"Y#4PS9! GP 3;FKIB:R!(#=3:#1CQ\:?_^OAV7T:DUY$K+XM]<G/[Q]_8K&
M/@O">/[;ZZ]WWN3N[.KJ]:LD)7% (A;3WU['[/5__>?__!]__U^>]Y'&E).4
M!J^FFU?WBRP.*#]G2_KJOT]O/[WR7KW]\6\__7CS^=77^[-7[]Z^._'>_NJ]
M?>]Y__GW*(R__4W^;TH2^DH0$2?YG[^]7J3IZF]OWGS__OV'ARF/?F!\_N;=
MV[?OWVQ;ORZ;RU^#=-?AL/%/;XH?=TV?#?W]?=[VY,.'#V_R7W=-D["JH1CT
MY,U_?_YTYR_HDGAA+"7B2UJ2\&])_N4GYI,T%V,C"Z^4+>1?WK:9)[_R3MYY
M[T]^>$B"UT+JKUX5HB/<YRRBMW3VJOSX]?;JN2S".'T3A,LW99LW)(H$R?D(
M"TYG2E*W I04_"2?_1\'/=/-2DR#)%RN(OKZ37>B K8D8>PMZ7)*>4OR*L?H
MG=!P26.Y4KSB<6UI50S3-[D+,1[WLRGU=D]L27'-2 /*F,Y(%J7=A?QX'"7!
M6VJ?DBJ?M>(L91&9)C_X;/E&JK*W/[]_^R:G6&B"E(J'I5[,4BJ7:T+G^=^<
MKAA/A2I]S,.*1U-O.T9.K,$02O(%FV$<2@7T2?Q9MI8$#L%(005]2*E0^:5B
MVA(2,?_9*TNVKSRA_@]SMGX3T#!_NOR0RZ)X:33\\R).PW1S_FAE"()I]-MK
MU<\%-9'4OXR70K%/3?5$&X2J3W1.HN+9DX<PJ2!,T:(U33.23//%EB7>G)!5
M01B-TF3[C5=L\"?E9O4?Y==_GH>)'[$DX_1>S)=3\91ODVF2<N*G3^@VZ.&
MC[MB+=QNET(%E0I^#'JZX&N[ZH7:H%?BX]/IU-S0)=7W9!K1)HH?-:JC=J]$
M)]Q_Q;BP9W][+6SB8G?YFWQM-/CM=<JSW7#EQM72S)EQMM02,6NQ/L23;?*G
M,&L*%NN4$FM2[789J;%V%*_K\?QB&BI8DZ.3WE_-XSVJU;NIWNBZ<E1^R>)4
M3.J+*)>K,'0*W6G,\8&[TF:)U6D.RZNJ66OHZ /683O:,_SW-Q6FY@ F]%N/
M^'ZVS"(96_!8NJ#<$[U6G"[D/%Y3X8"+OZDGZ-Z]/UWCNM7@%LWN#O2A08X&
MN8%!?CV[I7Y$DB2<A47L:K)DF5!Z#09MBQ'0\4 #'0UT--#10$<#'0WT>@.]
M]?9JW5#_59BB:_$7XQM#*[RBIST36_EPM)_1?GXQ=N75=@WH1[)UNJ"%C!8R
M6LAH(:.%C!;R4!:R_CYDW23^Q5L2_HVF4NB>,'PR+AY&38/4#:/8,Y6U"$&S
M&<WF%V4V)VFN6#6L945+-)+12$8C&8UD-)+12![22*[=?JS;QN^]F*9;],*J
M@#4LQ61-%H3O)*9I(6N-9<].-B 'K66TEE^,M7Q!>!S&\^2&\CNY%)ILYL;V
M:#FCY8R6,UK.:#FCY3R4Y:RY"5FWG]]YG/KR+^+[$@8B:/1$]UA\]O-FIF%F
M_0'M6=*F-*$YC>;TBS&G[\)YG&/!XG2R6QXW+ K]D":-YQ"-.J.AC88V&MIH
M:*.AC8;V8$<16^Q(]D\C>E.2A(G'9L(.I8GX/D=B&YK:#:-8/%^H0P@:U6A4
MOQBC^IK/21S^E2^#,Q8G0O\$Q6&+.+@Y6"+7L\LP)K$?DFBGE!-]\/10CT%#
M'0UU--314$=#'0WUH0SU8?<NFR9]P/PL_T#BP*/Y#/7">,;XTM"JUQS(BF%O
M1,L@MOU$/#Z0)%Q&9%<E\,!JK?Q]0#OZ3.HD3LD9"Y[N]*J?AZ0FXUSR+A8"
MB?Y)";^(@W/Q\JHH:V@Z()7GY2PJGGU#><B"2_%=E1?2V-8:G5)&>E0^:VF!
MQJO]*E39RKK-[5);92/K-+5 93';U$NHMIT%^OYO1GA*>;0I2FS54*AH:8'&
M>TZ$<2??7B.1JJ8VJ!2/J*/LX.?!(T63(!"&3E+^(U?GB3)L5-/6%IURA[OF
M]^R[.KBE;&F+QALF3)CH_X4KQ2[=W-@6I;DQ>\UO.%N'1=GW6EH5S0>G]DPL
M"DZB*V'>/?P?NE&2J6@W/'TY*/HN%1Y #JQ)KK,TOUK@H+3T<V(U.@U/>6&6
M[8HFRC=<:7+H-(<1U89%C<48>_'8BR7E<_%J/G+V/5V(2;8BL7K%U+8>G-;+
M,*)?LD-O_AF!SYM8H8J?"4TW/RBD4TG8LU:#TW85^XR+Q9<;J+DZ/I/I1;ZI
MW6JT>EF@7=B$Q$_#-166*REU20W1=<T'I_:6SD,9.(K3+V2I%FUUL\&INUO0
M*&I:W%6-AJ=L2:+H-$N$<9BH-Y+*5H/3=D\>K@(91]J6'6M0/@WMCRI?JD$3
MDR&1!8O5.EO59$"J[HKB#9N3=]/[,*WT[55-+%!U\> O2#RG"AU2UVQ ZH3K
M*ZW,N\URRJ(*LBI_=Y8K?#&Y-*TX%&;4VKRI@3-JVK%.9A)MM/P:U=DU4_8T
MO'%-WMX!Y:W.[--D[3TXUFJ269H\_0B.)[V\DR9[/X%C3S-?I<G?S\#Y4V2Z
M-+G[!2QWSP/^FBS]"I:EVA20)G<?P')7DX+3W;2'Q\2TGHVUB3%=_J!:):J
MHBY?4"T2@QB?+JOP+!2#L(PND_!,%LU<JRZ#\(P6K32M+GOP;!;]E*DNC_ L
M%]T4MBZ'\ P9-91.ER=XYDM]>%;7)8=GN=0'>'7Y@F>QU,1A=9F"9ZXTQ[QU
M>8-JG^B@)'1YA&J>Z&1G=7F$:J'4I/AU68-JG=3D7W59@VJ4:$!:=%F$9Y4T
M)?9U.8-GFYB"XO:<6CHO_Z,W+=>++((Z#>.<']/25 VCV#LOKT4(GI=WA.6S
M@O]X/EGE-W]._']G(:?!^^#W;)I\?K2V2P(:VW4_!IWP]. (M/CKZ?%G\=6?
MG\E#N,R6E30J?[=$VZTT;BM>7N5O-FE22JOB5VAT];8$S>B[\VE,>,@N&:<^
M25(EJ?4-+5/[-4Y6U ]G(0TJ]9M6VS'1[&IV;'?6+6&*55_;SD'AB*W]GROR
M(N-3ZG1:*7OC?L?$4_]SJQ?>GL\TS=8.Z3_;VYOZ96;,.F/9("R"4T,Q%L%!
MX&Y?C%3;\ZS!I(;$@>Z.P5J; )"X;;;$F)%I;)>W'@HR&1D(EM]<LTK4GWE,
M.TZAF]'M?7I6X>6'6(W#E*FR/G,UG2@P<U9/BS#]T &HB=I=D7::ECUEMGN:
MEHJ('JBI6&6,L,9 *;@YIV-L=9I9/>$*L'8BUDX\XMJ);0(RUI.V/WESQH+O
M813E-019NA"Z0<A&:(I07OU.DH0:7R]D-JB]E&X;NCID>/T"7U[$:,H_]EG,
M\HL_O]X]"<8\_P%&=A<6-9AKAI9KOL@X6ZF3E%4_V\H_%9O;1\KFG*P6H4\B
M=>ZLJ>V8:':=[SNDJ"GGIVH+)(^$>3_,^V%FK)Z/CZ5U-8F#JYU5-<F-*OT\
M9KM!, ^(>4#, XXGKZ3<[9F1&0:)OV/+$F(F#3-IYC/V&#-I]:X)F'FKIS=9
MDSL.:HKVLVE F)1]O#A5:'!T&4',VQASA'D;2WF;+@ZH]?S-S]Z,A-Q;DRBC
M0@A$TB9_-4W9-(YC+TNC20H>O<-T".1T"!Z]PZ-W>/0.C][AT3M0Z:ICY E3
M<)B"*ZFZ%*;S'])RWI.7-&7<M/I@@@T3;)A@ YV PH-VT%)H>- .TX.8'CS2
M]"">:+*6 1S\1!.<S!@>X80V^1P>X<2#=IBPQ81M4\+6('YA/3_[P4MDK=8I
M$0*3=4178MKF1P&W=&GF9QO'L9>?U20%\[,O,#][<7=SH\[*/O^UAT=^8O$\
MI7QY%8LM6)9;OXE(_.[MR3LU'9I=,%'\YV>A.FIIJ_H=D]B8Q.X00)]\)SRX
M%\^M22!5MG&:-KJ>G1ULA;<T$GMF<,:2-,GKM)_*W?*&;'(@4U-"IJ=1,8W6
MFH\+84:Q#:5YH?WKE11^Y>K1;N^ AQO*\UL%Q"977!50RT%#:Q?TBTU9WGU3
MHP:JFCBDM#:+7]UH'-0"V!5NJ5 *H2_47[[&:N=R;5L7*>&=KC[4YA/.Y;Z;
MZ^[3S3-]GF]Q^WTN#K3>VY"/0LF9/@K ND$0!9RX%H(H$$1A#T11[2,QFWL%
M1+%4VHQ,STX;+<)";2B#"_XKY,_:Q.Y ):7:3< C 4QH!&[ S<1!]2-KB(F#
MG+I.MA0(*P# ;#$,-8T2^#)V2)4Z&P)J.5N!5-DIFS HP&WXN\%M*P^-R)A=
M:!(@V6A%P!&XA< M,XX1N*4$;O6:Y[0.[3HY\<)8M*)>2AZH:<$-16][,*Y:
M A"\=<S@+4SV/^+C*E\&]^1!OTBM3A=,]F"R!Y,]XX^AHP6-%C14"UI_'[)N
M'K_W8IIN34RQ".51@:68M8DTZ(7-*=Z%J<UL,J0]0]J<*K2NT;INMHK\!0VR
M2+C&%X3'83Q/;BC?>L.A/XF#\S#*A)N<J[4F@[7C:&C+NK5E!Z)6:^J8SXA1
M6-YU;*&QC<8V&MM';VPK5 #K>=NT;GK_Z$W+.BS2%MU>/IJT,[KU!K-G;IO0
M@X;V,1O:H&M$&]MB6/$4*YZZ\2]OJ<_F<?@7#:X"B:F5Q6N*^PZV2T3L<Y]"
M,@TC03A-Q&_9TMCO[/4IZ(^B/XK^*/JC6&P4"W)B04XLR(EQ(XP;P8P;#6#V
M6H\G_>3-RSO1/!(''DL7E'OA[FXTC^3\M LOM1K;7K2I WD8?#KFX%/O7OBE
MG+CT4[BFSZX=-/2TC4=RRO?VND5]_I0]'/+!ZJ1^F:49IY,EXVGX5QZNOGB0
M8'=J]&+[? 3&3S!^@O$3C)^@7X9^V<OTRQJ,",O3LE_>6AJ FCS;.Q6MSW/_
MMI%U)UMY[74[OUIW.'NNM!E%Z#VC]ZQ_VV6QT#\7DRJXCF^IGW$>QG,)T]*_
M --P&/2BT(M"+PJ]*/2BT(MZ25Y4M_W2NF7]B[<D_!O-K4POD23FF;9V=K7>
M8/:L:A-ZT*9&F[JYJ@>=IG>[>319DS"24^F2\3L2Z64LV@SAI.['FB9I[H*>
M121)\MS\Z>9,[!GRO'5&HL\DE4QLSL62T^*\CR'1JT"O KT*]"K0JT"OXB5Y
M%>VMAA$F:_HS%*R[4[]ZH2 ^%EO1IIT+I1[ GMO41 .Z2N@J&8#8KK:3Z2SC
M?*N1]1%M>MW1,4#' !T#= S0,4#'X"4Y!NWV2>MV\0<OD7<J3&6M<EF:9%?.
MO)V5K#N</9O9C"*TH(_9@E;47MDOU;Q(TK3R1H[D6IZBNE^0^. .HT0F%(N;
M/>0)N.*[6M/(W@.=NA9?6!XJ$&SM[R?)[T/X*A9W,O'3<"W>HZ'#T650I]*H
MO@SF\+6VE$C7@8%(Y7#N/[HI[";C_D*TD/?@&"\UBT\$*,=.6FK8A[B7UO3I
MDGERQ=0D#IY\TT5O#?=(#*Y@< 6#*QA<P> *!E=>9G"E'PMXA+G8(4VS$9^I
M&][:TA2.O:M&3833W8769/]' .S;CK5HBN8G **Q[AM;#VR?O/6([V?+++^5
MLZR!).._G"ZD[;"FV]MOQ$MH":OO] Q[(? >R,2X^#''Q7L/LIP=3J[BNJ]/
M8FH9QDV,1L%0"(9",!2"H1 ,A6 HY&6&0EILE_:M\G=>^=H]3E>RMDT\;VE[
M-X]DT<+6)0;MZ&.VHQ7XDF(M7HJ%?2UVG^+FI]/-1\KFG*P6H3_AE#2#1MJ/
MTMUL2WAZ8+*)OYZ::^*K/\\$02P*@YRT7/U62+JYH3-J*Z>L3M/Q4 S@!J+S
M,"'S.1>+3=(F2XVO:9QI'M$VZ>N MT\LGN?%W(H2$T]7IY[_VVX0!]R6:BB>
MWQ5;7_6M99JM'=!?SAZI42_$MLQC$IUE22J4+&_YZGH8$<,8&,; , :&,;HP
MHF%C,1/+9G0A&ETC$XR[K_4NF.%F"BH.U7U.XIU/&#[$\&'?X</>3-810:AZ
M":>,$"/5Q;,<(>JI1;3 >CQ<=2]\0%,21HDG-5Y&=@I+,S9N.*J].'DKPC!F
M_@)CYG67G!Y&Q9LO0^U$QO8FTK/];+WA;!U*BXE$5W&.H<P-5;E.2#3Q?9;%
MTC+/]Q>QH%(Z"?Z5%563SDBRN"%A4,7(L$^")PJ6_U1\2L*@W((M2*;^P> $
M=4YGE'-YM^;#P86;P\NI_KF64AZ?R4.XS):5RU_YNR7:;HF818H,U[/?;-*D
ME%;%K]#HZC]!I47?G4]CPD-VR3CU29(J2:UO:)G:KW&RHGY>A$^9"6QL.R::
M7<V.K1&[)4RQZFO;.4@Z-%ZCKLA#:/<[)IX I,:K:'P^TS1;PZ#_0GQ*-U=Q
M2CE-TN0J23(:7'/YKW3#OV12?9:'3\I?]=GM,+A#Z1R89X\LT'M.XJ2PN4X:
M9& R!&Q.*U_A) ZV[["[('2? $9.5=[)A'-I(Q65=Q?RXU4\64KK7<(^*[ML
MC?:-V60:[.FCD6]NC5[/KK-4!HCS0X#T]W"^Z%6,30\!+:W=R^TLDF<CP>"[
M@]N\O\:S:=\>['D.9+B]EW9[0G1/\YY2E3R,^CK@K3P.F]RSTF#<OD":?.0L
M4;&EVPT61U^HU.DD66SCJN;<*8= :)M;:!LBJWI!5CV/[;&&\!HD#G2]1]8Z
M' ")V^:H##,*DXT."6<4+  '7]&?>4P['0@*7C7$:CP2G)QF0!7,G-73(DP_
MC0!JHG97I)VF94\HJIZFI2*[!VHJ5ADCK#%I"F[.Z1A;G6963X U! 8/" Q6
MKIAC P;; \?JL=0^WP .':O'</NP!CA\K-D;[C.KIBD*>Q4">Y_L9CDE37G8
M*PO811[])#8T1?(S,)&8Q70UF?P%&).=LS>:?/\Z6KY[S(=JRNH#?%D-D</2
M-9N@G7AND=+2916*B>@*F:TK)RB6I2-DMJZ8H-BCUHY 6#_A]9,W+[6!1^)M
M\=UPI_$\DI_%ZWC@J]M#[)W_ZH/.#L?!\NG"-T4FMOQC?^2I_.+/KW?;!Y8I
MU^<_P#@*!HL:/)@VR,&T#KCUBXRSE?K81=7/MA#U18AN?_Z81.K3 $UMQT2S
MZQ,,AQ0UG6)0M76 B!'>%4_#O\J#W'M_H3C(_H0)LTXP</)X+@//90Q&_Z4T
MXFA>^>'I*I )Z' >%S=3^YL\QAGE*^:CD/TG-;RQES&=R2*JHGN[8ZL \R9=
M'6)PM[2<9UQX1C>4ATR%XM3I@JA-1&T> 6JSV:IA1N8F)/Z.#=.)N$?$/9K/
MV&/$/=:[8&#FK9[>9$UA!U!3M)]- \*D[./%J4*@H\-O(LK.6$T@RLY.MKC9
M"QLIJL[<<1XIFJ['H,A(070F,5?KJ=B?O1D)N;>6F#3!*TDR7H!X.F9?C<>U
MEW!M21J6W,3,)N3,)M8%Q+J 5O*F6!=P##2[SJIC74#,/UOF;4SYYWX/&;W@
MNH ONEK>\=5APCPWB/3I4>6YL3H1I$PV5B?"+#UFZ8\T2X]E8*S,0BME8. D
MJ+'N%;3)Y[#N%58G0MP$XB9L5N. AIUP6* '&KK"0H$>2T"$#UZ2,O_;E BI
MRHLP5T*7Y2QT!"(8CVL/B-"2- 0BO$ @PL7=S8T:?O#\USX>*58 VU!Z)R?I
MMFS+343BZYG0**IS5&VZ]D"LO,=9:+;E52R,SC1<YT][]_;DG5IHFEUZ($YP
M*Q]!9!6P>\+G-"TVI#.RDIKW>G9*A4PN"(]SC?R'T,_B[T_L.^6?PF685E'?
MUYC.V/NZ6O7.WO,Q$7SSYV>Q:]725O4[ H,0&-2E.$&4/XX&N<5]*BV<LP,#
MY^)!?E0ERLPZN^#N.^'!O7AN#>2@LHT#6G=;,>7KT*?5(OW"XK70H$*52JJ%
M]YB2Z/#W,Y:D7UCZ3YK>4I_-X_ O)?9@\.<=DPP+,^B2\?(KV4YUU-X-$2ZE
M+8W'ZY4DIU+K:;=W <R@/*_,%I<OJAHZK-G:!?W"%/Y"EG4*KJJ)0TIK$6W5
MC<9!+8#=_%:H%![Z<D>6:ZQV+M>V=0'-J=23!^5J3S?[)F7X-%>>^?]*OZ)0
MD2K-/,0CQB2I\S#)S\)><K;\3/@WFMZ(&4"WOOZY,.7ZEIS!(\<DR6+W2CZ*
MAFER%1=SXA\TG"_DEKZF7/C#^8^2P4L2\KR6>-_"[48%1'DGM2LPM]+C0$LW
M#_DHE)SIHP#LC3G)T^95-GW*E7!CPR))4UN/JO?QQR2C7>BX4.ZB]Y+%15"Y
MB _V+33M!R(T&J'1"(UVS$%]K(W9W+4ABJ720V=Z7O%H<=/JL 08>&"#_%F;
M_"0HJ%F["7@D,&B-! "XF3BH?F0-( 604]?)E@)A!0"8+8:!_5'"V<=^4$*-
M&0"UG*T<E+!3DW#08RL6(;Z6E(=&'@(>YM>2;+3RC7@< X]CF'&,QS$JC<3^
M@[?PE+J^-*QD^^!I]N:;_EIAIC49A582TU9\7E,\T*Z9;@. U&05VO71PV$G
M- 4"[:IIIUE[39E!NZ;:$N944SK0+J9V"1S5M=N@W%8]P-$:71% L5T'.'X#
MZ# I29)L66A*+Y._"EFE"^I-(^)_2_R%&"SQ6-[ 6PDC0W#E+5E H^V9S"UG
MG8^?]D8)A .K/3.#1UR/^8@KGK/#<W9XSN[EGD0;\;F>UM[9SN&:['=*Z<?+
M!,5YN X#L=_=#@"4-WWNL<CT#R9ODHG$+F5;JM5/'KM<;\/DVR6G=%L_QI94
MZYX+4::P\?(HN9=XTJ!.6]U3OJP]US;H Q%%CRAZ1-$[YN#%HN@1[#LB^";"
M?\<"@$=X*\);CQ/>BB!%!"D>*4C17KQFS.!%"\[PR*"+SD*I8T8^V@OD0T9>
MI,R3L)&EZ)]C!0YNY6:S_!N:K%;#XR[:T0$2==&%%<1<'#/FPK3&=TVM<;TN
M" A!0 @"0K!P)Q;N=)TR1+@*?)DB7 7A*@@90,@ 0@80,C BR !6F(.9WFR0
M?^.1<_")SW83$$(:%!/LF&#'!#LFV#'!C@EV3+!C@AT3[".0$Z $^\F)%\:B
M%?52\D"3CK=C:XYF+]EM1!"FK%]BRGHV$VLR7(L=4,Z3>_(@5^69L%[". OC
M^;4P(?,UGX@&G(IE?D[+?S-91NU^06LNKNY[<!?GK+5Y4 0%S0< PZ6L1!3[
M8D<KM'YZ2<4F12*Y=62"M,VCQD;LMQK9@5QV=)15XDYI+'2TZJ*<AM88;'<;
M;!^(VJ\QWQ7Q$N^^?.DJ03>TQF0!!CTPZ(%!CR<L:>TL(PU5M#601A9Z&-(B
M'FETH7?;4%,.T"H4:]D$-F,CX@4D+ H#6379FY)(WFW@)0M*T\3S,\YEFU4^
M#[TL)ED0RG8K(K]?T#3TB<D)@QX?9B6RTCN]&'@YYL!+7[7IHHA]EU/MDO%S
MEDW3619-_+R0?R(T)@W7TM@Y*^:?PO=H-88#7@\+T1-^S7,M&N3A9+'[Y0%G
M!8<&/=WR5=P4,\G2!>.'M;'5_*AZ0.#C*DDR?1X>MX9 _W66"OT>!\+"TF6B
MHHL+(+T8C(KE&K19+&:=G7.GN63T.@'AIG;A-'? B"+"=S$BAQ$YC,@YN56H
MI2T]TCA=&W-A9#&Z-C;$2&-ONL;%2$-JQHZ@)I_0;OS2=A U^8-V@9>6\ZC)
M&[2+MO1]2NNXN!^]:98(VI-$UDB9AG&1E/!(<9>>-'W8S%N5AUSR2VBH-V,\
MKXI"_']G81)N6W&R"H.6A6<&I\,>%L\2*QA,/N9@L@+%-Y'30^SE[X/?LVE2
M65RCL5T/9)R6$_QL/[_W]]M=!6(IA+-0FL63)*%ILJ5F$@>?Q-<2.1V*#4P"
MAB7>6.9$Y[D.+7[;5 >W'3P9OJB^L-AW)JWG#W<GL*O8CS*YH7YD+/@>1E$E
M$T6?_)K&'N75^MD. F1;%B?[C:9DH[Y(BW:_8^()0"V:*AK518H:6CND_V!)
M"4V2A$&)?[GG)$X*!U55':/-$+ YO1!O)]ULSZ*5KHY0&O)#3=QZ@"? D%/K
M3:EL,DU23GQ5-GSX!XY<BJ754[2T(,3*YQV'# ]^L"?(BH>.7)KG9<SRGCS8
ME6C]@T<NU:NX#';03^%:_IF2>![N^EH0KR8%(Y>SW2E[?//T\!M[6WO-4T<N
MS[V?;G=FUCYWY#*]3A>4[QFTID%KGSL>F=9&2K[0GM>[[M-<0!1)LMB2><G9
M\L!S5R$4FWLXX&,K8@713W]V <LKJE8D]ZR4WG8RT>0C9XFR[K-F-U@<B4E]
M/3N<*>;<*8= ,"*"$<&#$?4J<3;%2UGK /CHH)=&(63+[[(9B*'_=IAVBA04
MUG2(&0NA_"*"AA$T?'R@85LI![!Z>$#&!Q)S35("W"0<KY2- L#@\/-VY5[M
M,X-#VH]W,FK$TL"!_NU(VR$:"MRBM[_C-V8BCGK;K^.^X]3L! ,]:BN@0>@N
MP O@%,&137(5>O>H#0P'\UP'4G+49H8#F6MDGL&==QRYR+L*VMZ!R_$(VBQO
M#>[DIP-!FV5KP9TG=2 Q;3B!IK ^'+.PVJ?+=;V'H_39!C_ H"O=E^:<:9Z3
ML7[L_"=O7FYM'HD#C\E G!?N@L$>R87B^0MY_4PB?LD/1_N$\XWP8CRRE.57
MY 'IW3#MCIT/3H>]8^>66,%CY\=\[/S%@ %WEG6I=XNJVY4WW)AT<<C))>,T
MG,=%5,W?Y,H^RO7^1S%1/ZD!CN8#(  0 8#@ 8 (+$)@T?$!BSIA J#E3/5W
M5' Y"3,&3;=6J/Z8\,3#97X= IG/N= U^<<EXVGX5U'9BA;7U@SKCK4F YPW
MUI$3=,:.V1E3%$BZS.%S405\;GOO[N1@ DUF*>7_I(1?LJRR5%@/PSFPK"_5
M&,)#<LM;M+Z(A7+_G49K^EE8)@N5[]#/H."E<4OE:A$;YO7L,DQ\$LGWV8M(
M:D<&+Q?%*NEGL%%P?R^>KW)3.XXV#OZ_L_ZXWX\%BW?UZ6J]3AC]P>@/1G\P
M^H/1'^OQA-ZML9$&COHTU$<:6NK!( $'.AV,\^>&*#CTYU"\/_=!P.$Q-:Y3
M[BU( 0XCV?F]U\! +06/?_&6A'^CJ=QFO83Z&<^A2EZR$*]$O(EE'@*-6#PO
M_EB3,,K;RDL/$O*X4[O \9 DV L:#\\%!HR/.6#<UPW$VWEUR?B=F%7G=)K>
M[2;6Q/>S91;)3$6.J)9WFI-(HAIE+NN4BKDH[VQ7N+N]CCTBV<@<WU"RJ1P;
MGFR*#5H>14O24Y(H:]BW'08 QWLR'Q.MR6E3=Q?E'4G\[3Y<BI>P8DF85E\Y
MH]?857'%.)#_2#SY6L@X%I:R^OZ$Y@Z.;K&FW ])=$-6LF!!6ARQI\$_PG11
M37+M>^H^H!,I\!7C0OT]7AL-C&KT<1.=)[&4_U6<",="6H UD[*AM0/Z?Z=1
M<,\^DU0*=-.HYYJ: ^+@8)>5&^SVP,;O+,HK6JCODND^X&BD4(,E[CX@("E<
MDI#G%XD:,ONLGP.>;JE0%:$,C%2K\Q:[1A]#HB0 7"F%V=3AJ=V>M4O$/+BC
M?!WZ0L_)/,RSK3RY%]0EU3_5WEXVQ"-04DV/ +!^O]Y]9&O*X]P0G%-!YU.'
ML59[F79WPF&^D.7[NF'RX*M/HKML&H3K4&; F_@SZ8Q("RN%MIM\&&9#KT$4
MC$;$@0UA@XT.CF/D#5M^T\UIOD$F->NF]$#AEQPK"@BET %,(X. &3CHT/!+
MK(W=9'<*]:AG=4/AX%1M+WOD85D5C:P&2%5JS[3HI#WM(>N&UY[]Y%7LJE:$
M2B-4^OB@TMU0!.",FUZ8;H.N :?$AY5$#99FI'#I=B"3D>*C]3+-(T- ]YUB
M'BD&NJ_<LB;[]HJ^=F-?D6T&@P*?DDB8T%16%EP(%E(ACX(%85=-TT<M-YZT
MAV1YRXQ$WD&[/B'AO=/C'A\^$$L(%D>P>$<(;*FN0ED>^2&]99$@8'YX%J\)
M8]/W\( E5))?'M6[7W"6S1>7X9KV)2/]!X"3TC% J1%V R+Q.J+4.D;F,#)W
M_)&Y?K;T(XG8];5W'TG8SC189<G7_=4+X[7XB_'-P:=V?JK66/9\3 -RT#]$
M_[#1?KS:SJ%'UR\]L1^K&[FD5ETDK:J)2TJE\B^OETDH7RL]I.8.Z!.A3X0^
M$?I$Z!-9MWOK-L"1>C:Z^\U(/16U&6#=&_G@)2GSOTV)$(LG6LO:7T7Q>"+O
MCUO)CXF7R5_+6[_6VU<B4T9"G\X87^89I'R@EH[,T&38\X'L<(+N$[I/S6F1
M[X0'$HQ:4Q^BLHT#6F_V\_YN07C#,<2&UB[,>DG&J5ST9P=K?L*YO#%1:H?3
MS;Y)>1-L+OM=#&ZR5P_;NH3GX3H,Q#J_%1I&Y2G8>NZQR/0/)B_/B<3JM"W5
MZB>/7:ZW8?+MDE.ZO6W7EE3KG@M1IHF*N;T&CH.;B,1?R)+6GD@?\E$H.=-'
M 3C3GY,\;5Y74Q-M=4_Y\J1.CH,^$,.)&$X$'T[4.Z1?;6$SF_I\=%%6#>\$
MW-'105\C,_1]0$6AG:X$"(?S,>^ >8?CRSM8=N=&FLJP92N/-!5B/=(RTI.8
MEN-\UO-0FG<>/_^F:)DN2+P?8= +I%N18"__-#P7F'LZYMR3XN+H.S9+A3JA
MPKA.I?M1F9[1:-D]1)+P]" \(OYZ&AH17_WYF3R$RZR:2N7OMF@3"[Z6MJK?
M+=%V*[>3BLE5^9M-FI32JO@5&ET 0L32:,B$9;U=G$\N FNZ\4&_KPO>LB1E
M2\IO:90;1<DB7#5<[=#<PP$?ZGO:OB9TED6?PIGY_=K/NX+B[+  P^$M?,9\
M-@T$B^O3S6?R+\;/(F%[U5_>83H"+#[K</NZW6!QM)=Z8[:QY2@OA5\ N^)Q
M771?0UAQFW,8SP]5XPWE(0M4.=Z.HSG@_W->WT20E6_K%9.PSB0PZ^R NR\L
MSM&D*9W,.2VR(;4<-7? )/NQ7A\24*EGZ^>'JAG" @9EI-J39@W.+"0.NEBG
M>M=2-YM'HT4TM#;IP>$=VKX_UFW3!97G=K,4($ :[$P071MF='".FG@JF(6N
MVI!88Y@:U!K5W7"!KZJFMZ%.:( #3O2@&%K$I,$!)#J(03O1!@[MT,.[KW=<
M-#FV5WRZC]FNFZ^PN]01UHBPQN.#-9KE)<!MKIV9U$JD@=M,.[-=4XH!R-;9
ME455*AC<CMGY7>HG**SC'-][,4V]4+JU5!9[D"4BEF*_221X,Z\7D:6[8A!3
MDH1^#N,+PDB8N\'3SD6O=G!'"Y380SU:8P;!C\<,?NPI W-!N-0^B5 Y6U!V
MZ"O2,+5M =!^7BP13>J?M'92V]#GN6(@T5FN XI#<I,TY>$TRZ^_N&?/H?('
M9\P4K/8WL(OL,977"0K]]DD-R*EL@SGBH\P1_X.&\X6T\->4DSG]DDEK['I6
M+M]B9E]GJ=AE8WD1DH*=EJ/ X?<9B76:NM48F$W'(!,&F3#(](2EFKUVI!&E
M#MIQI,&DO@W"D0:<.AD!(XT]:3AMFIQ!NR=4RZ&S'C7[V9N1D.>54JE@DB19
ML?*2P^_9S)MMKUS?'FHMVP:>K+_J<7D'"!?LY2&@I&7@S XQ]F)G-OG!\!F&
MSYKKUN;3:U>XX#Q,I&X4,TWAF#6V=\'#T5])>)HE8B-)$F'[3(5FD KI3/@+
M0@$(W2$^):'8X$BAI\@TK\:A8+;#2"Z.FY)D,8D#^<_%O[-0J$>I*_5GJW%_
M%T>)#HJ&Y#C<0M%?Q[=;)2\MGN1KS*:R++^<J%?Q*DO%STQL$5&8OZW33=X]
M![C4GQP;^'$HP;:/@W!(;\O:(75UAV:;VKOE8??Q]U H->XO-I_HFD9Z#&ET
M=LO=Y[WY>,GIOS,:^U7V1HN>+OG*ETJ2B_JD]DR51@\@?+PSYN,=2#[>&_/Q
M'@X?57->3\TW]SPVOB#M1 =4)L]5LC&GC6.\!%ZAOM^= :6G:#2Z.N!LZS<)
MCU'?4='KY.*@/XOIIC@[>)G%0</!_MK&"&_ .O/@4^":Q['-W 36RYX$7! *
M!["*]T%##\#%U.A[-4R66A-T='"1ULXIF).[;=Y5DSZH-69  6B&G^ 0C@H/
M,]&U TRCF.O-FUB5%)IB-] G^Y"[/X29[VHR5 ; P*&U!F&],F9FE_5A]%U=
MA@"NBAO*5F5F;C-T1>C.^N^D)GO".2)P&H'3QP><;HF> +=-ZW';#@8T4CRU
M)HQKI##ISB"GD4*E3;((UG'%'[PD9?ZW_.ZM_)3X]F*EXGN/Y?<E><1/P[5X
M(2T!PQV?8@\)W NA"/%%B.]P5]!?;V\P$[9MF,BML3APHLI(#?6<<<OLR9F=
M\A=ZPT-?F=NS^_01RE?8:#,:IF)72Z[*:C,#R;+F22.4VT?1,-TQ4G=ER(!/
M&J'<#@[5#:H#E<\9M\P<Z$##IT.4K_(&[L=J?J^8AA#S($2,4=H5&X$+>;<D
M8XP2?[R%N!"V.04(<CO*&CYWTB>_2I*,!N>9S%44,Z(X<9__^$0=*LW1U@,A
MM ^3-)BDP23-4Y:&]3A&FLQQXCV,-!<TN*<_TBR2,^MQI-FGKJ:-)MO0JOBX
M]* U1?;+V$36-2:K*9=?QR:708,#FD+[,#:A=4L[Z9J%]J")UL729@I9 A6<
MO/-*5\+C="4O((CGXM.:QAGUI-@\MBJA'HDWW92-)%.[?NUP!OT_V![T8"C:
M$8UPS&B$YTLBOQGM(N-BMMP5\Z+R='!3LQZ(^-]D1>)&&M2M>B#AJ[PA)<AU
M<])(26/C[B'.A*<'X4WQU]/0IKS)4&+A6!0&^5K/MY**^=/<T!FUE0M1I^EX
M* 90J^&ZV WB>3E5ZXL -+1V0/]ML;5=BIU-PD Y\=-_A.EB>]/?5>Q'F8ST
M2%"L^"^X)P\*WCJ,Y")I4;R VKHAE6W&0"N =;$SQ+=XX^V,KZG"I=4'DXA8
M*0-\.JV>$0VC@9ELU9!X,UO+3$O9CBX5JFL5@CG9J377F*$= RK?VWW-03AR
MWN/A8X/-%LPTK=<5S,R!!#4]^U&;$*9HY]?7& V!EW:OY:<ILF*7'03Z(-#G
M^( ^G6,/,)(SY=6_3],,/69A])[@.-UB0B3F53"O@GD5S*L SE*,CV( \>-=
MA*'QNNB:EI@/PKP(YD4P+X)Y$<R+..8-\R*8%X$8'L.\B"HZAGD1 -,3\R*8
M%\&\".9%,"_2BJ7&V B,O$?$XGD4KFFPO=%]NO'FE,TY62U"7S2<%].XMS1(
MJP<ZSHITH!F3))@DP20))DD IQS&1S& 8/+8DPTW4O7P=',3D3B=Q(&LI+^2
MI'VAJ8()G2YC2$6,B58 ,QW3)I@VP;0)IDTP;8)I$PC1,TR;J()GF#8!,#TQ
M;8)I$TR;8-H$TR:M6-(/,L#(GP1A0N9S+J:E?+#'9KN*53WF3+0?XCA/8D@G
MYD9>8&[D[,O99^(OQ&R,YY<A3U(_JTD*-+?N@:2K^%_4ES/V,XOD4;4;N0R6
MXK.:+LTN/1!WG2XH%\,'F:\(,C<UZX&(NP6E0NXIB=04J-KT\/A[\2L]O^%A
M?EGFI=@_1!^J)D6GO:5L1_E*KOD=Y>O0IXI<4ETSNY0F8M,MB5 G9AK;CHEF
M #'V%UL*#./Q$$*]1Q6/KU6ES$A_C3)<W;R5@(D"ZKT*UL;F A6YZ#PM@8<#
MS=ZCKDT/)CIHQIZ^\:G)X/ 7LY@Q6&_H:S(U_*TJ9DPU^D^C2P]A<!>#N\""
MNZ.J%>3OLL<T\*8D(K%/O43JOL3S,\YEFU5^EXF7Q430G>YO#FH.]G89W4J4
MMSN!&-X]YO!N3[[TQ/=9%J?)#=E(-7=6S"R%3UW?V"'UM]2GX3J_JX>F>CS4
M=7'#B=@:@N*PDM"[-&EDH[Z].QX^A60:1D(-4FGWY8;=P5?U_.CU=<-;MLPB
MJ8USJN3M29PNI$FUIOLC9F(N7<_4T<&6H[C@-PCRC8Q$-R04T^R,K$+A<0B"
MERS.;^U3L:C=T057^?$Q%>6/?G1&7<.ZKVKCFM;)-,F-21V:G[9U0/L6$2;F
MY#2,\URY-(>%X2OHDZ#%,"@K+VYUSZ;^I70?<!Q2^,)BOV]!/!_3@2S.2+(0
M^XW\1P)>UB3*D8+I&>%\(ZC_@T29*M%@U-<%;WO-6\N&HID#BL_IC(H9L3=N
M#DP ]?$HS5X.^+D0CB+;4.$/YSO_ 5WU:D6[GP.>+L7R%A[I)TH2JJDE=;I
MX:11TVGV<LS/K;RA\WKV-:'Y'JS!BZ*' SX^,A9\#_<QO"=$/_W9 84'SM?>
MFU206]O6">UK,4T9WZ@5:E43!Y0V^XXP/,3'KFN^D2Y8).R=1)H%Z::9^-IN
M;CFJU^R@=J;GQ#2X)\T=''#QF?!O-+]<]XZ*/47C)6CT ,)'X^:JU\EEU0$3
MNT>O$QQN&E^/=C_G/.G9/UI]7/ B0X1%\*3YG=2U=47[59R2>!Z*=5Q2IGX%
M#<U=<7#H0VJ]@MH.3NJ,E&YQ8P"@IJ4;NE<D#"X>5C06*[',!>A$2 UZ8MV7
M3ICIE(0Q#2X(ETBRY""W<4YGH1^J^-'OB(AHMXCHP:C5](U >4//B6GP*YH[
M(!H=87H(TT.8WA.6-/*E8(X0Z-%\P%R+=!FXUZC-K'9,!@S6WIA%?3P5&+B]
M,8_J2#@8M'T+GAH3$IK,_02/.6,?4)/5G^&QVIVI7^ QU:8*22V/O\+CL3J!
MJ<G/!WC\Z(7P=/=R@):+259"ETV -HM!-%R72X!FBS;F09='@&:+1DY ESN
M!DP57!><&:WG\.EFH,%Y?1J$5[@*=<='P/EZ9BP:0O; S5?C%VIZ: .<$VC&
M<5](;W!^HYD83" -X+Q(,U;U4:O@?,A6B[GI1!DXI]*,RYXTLCU_<G#]U-$T
MM.>)]J*BNAK"4&TK(SPZ/._4C%FCHQ[PG%3#B:P)*X+GJ+;6S,!-1MW$I%[Z
M'YQ3IT'XXU![/6P,G$=GQE_]N3AP#IP9<Z:'M0$N11-V39%GX+PTP[?;I=H
M.+?-C/<FZ!@X9\V,/;-30WMF+9=MVGV=R&+T_N'\\\)\ G:NW=3F$?8+.+6G
M$JLX-0/:7GP5IPK-WE")1J,'+#X:P+8&/9WPE0A:9,;_L!3FG=#82G::.KBH
M8U":33>4WRT(IPVOI*DY  Y.21+ZFN0_:@N ]O,PR@YVBP;JG[1V<9Z?QI23
M2$SG2; 4NZR<#*E8K"5(2\&'9B\7_'!A.]]P-E,>=*EHX:Q*@33TMW4_PS@3
M4Z,,D HKY93.&*<'@?^+!R%E80&',>&;/, A@TZR8BB+!('SJSBEG";JP@&#
M/]%EM8=RZIV*F:E^]PVM'= OML/]BU%07=G&Y2G>4GHJ>I7M(-#<L#TVMG?)
M0^-,J6GIZJRNT!CL,57U6XM>)R<G*Q,J7'9Y3.*<KFG$<NAK/3-:??!F'=M\
M-RD!53,7YQMIOM.*"50 7?>:24%[<P<\OWN4YW?_025@E@:3M5"<<_HEDU'-
MZUGI8N3N1G*=I4E*8KD@%>RT' 4.O\](K/,F6XT!F-?R-9V'B0R,9[Q80@W:
MKM_!\?0TGI[&T]-X>OH)2_4F%3BTA9+<8>YM ?(J=;C6C8&#PV#H,*>,#8+C
M1F_5:48SP"V_9KJ9N<<#;KD9<6D02@ W68T8-<HM@(,^&;':$"@%!W1JQYPJ
M%@D.RV3&GD&<$ARLR8A3:XDC<(=86HBI(;<$[B"+$8LUB2APBEC/0-)#0X"S
MCQK)KF&Q(I8%SC+JPE\EI@+<5JHW/8<(S8&;S#TSV4)\8U@2UJ6D%_('9\3I
M+2QC8"*X56/"@1[C*H;=HM-)LO!F$?N>](U)KQG8.1*]D3;$GR/^7.OF5YHK
MJ"7C:?A7[JQ)Q9X4%5\F<7##Z3+,EHFLI9BD^01\PE(_@[G@/OA75E)QSVZI
M6&Y^F)?!W+LP]TP6/+WA;!V*M72Z^9K(T\L[EVCBI^&Z.,W3<)7F@(]R(#G]
M<@43SHGX-N?\;"$_7LGY(>;#]:RIPL&)0IB6G^[BW(&8"4\J[=Z*!<-#7^CY
MLA+OXR\.6N[22F+EK5A"HH^<92L9%98K,8_-T& ?FE$(V04)8Y.T<"A#)JL9
M<%F^X9P6_^Z8OWCP\SEW*W;NB]F,J@_!."'"@;3/Z33=%V&<K$D8R?SU)>-W
M1)J() K_HL%'L6'70%C;#>*$VR?E+K00Z)J]G/ C' ,_S->L^!P5FWT<'.[W
M2J;TN[HXHY,OC.O9X6*YC@%H83B$.7@KA[5Q;G@H3*:5+'BPJ3-"M?JX.87R
M1#\_J:JHX$>['RB>=*Y5U>X*A;,G5=9:O+?Z$4#PN2V9K[ZU5:L/"%YVOE-9
M'J7!1S,?  :7,LV\KYK6>.MNBQ% \%G>#; UCRKO"-!FV60P-V?^JH(!Q>;V
M*!B@X-A\ -!<-JS<]@/!X;H(B75XMS4#@.:RW;O5& @.UQ5!/#-N:P8 S66[
M=PLSYCFJ<]@E]$RFB4R.U"K;.^!AZ[1=,GY+5QD7#G!"9=CV68V[I_>N:G=T
MR%59:/Z>"4] G@F05<#$C)=!K!*"(QQWMI0OH2ZNTG4XAQ*X9Q/_WUG(Z=,(
MWCZV)R-]#8P;C@*!WVWZ@A85_/)X3?&+JBA,FR$@<%I>+=24.-3N!X$GY157
MNLPU#N""2\Y\2H,<OGN5))D,H6V10U_C(#^J)"@,U])%JM8HDIU];#%7L]>K
MNM"FE6<ZEN5GDI9**'<XBYF0WZ(91<GU3*VS-&36>6S'LI%$7<]^IY'8M4I>
M-D8"T!O 154 DQT<W/Z,E1CP/+H9(W@>'<^C']]Y]*[!"7!XX X,]7K"!]H1
MZ.&Q>>"FPJ L/[KPQ13V 4Y9V!*5CAT(;H'9FT<&F"AP!PUM2:D/ #:X8W#V
MIEA[5"&X(TZVA.8$B0WNK+PM:6MF:<#I/STSK"W\!IQQU8*16C$T(>/ F4Q]
M"T")+P-G#_7-N3E,"=SB'V UZ, HP=DQ0VF%+MS;,TCZYEX3L@C.5.@FA[;H
M('"+H5,$3AOZ!<XRZ,#0X<V=+3/*X.R$@<2A#8X 9SX,))!Z. 4XBV$@*9@
MA, IS)YDTC)[#LZ<Z%\</:$IP!D<_4BJ+>0<W,3I9'AHGR<8B^&APY!BO0R,
MV!J+K6(JP5[@NF.Q6UH*1Q>W/1;#Q5 ,!B>8QV*F&$J@[>$U<+M-/^* 5@-@
M+#:.H9A=%F'1%*F]NL8 1-K3''5:FS"1N[G<W"E//"IX2S<]%RG4>H+K:H4&
M1+8H6]BI_%VVS')3+(^15)2^_/QHD3RO>&?6WTF1NR!_P=*&",42+L/,]7SI
M]'%=L$]!9&Y 3Y\:T+=RUB5BNI77T13Z6N;JY\7\_X-$>TU:5[QOP,>Z*'^V
M-ZYK9X2RG5N:=>\LU.GBAI.F4KO/&=$KSFNW?%:NTB5M+!:KI+(BJU;;,=+>
M6VG9%W0TO6(:Y[>',$[#>7R6<4YC?W//B="C?HD9SO^*"C#93B$W+)=A'P9,
M>KOBWJDPJ*=9*L/5]^Q&J+LX;;K3O*=A 4GD:\Q+S.;O17!M"]V\C@]@GESL
MSL+#$'_&\V)S;CFC^GJ<DRNO4T$K#;;79-0: O6-71[\>Z*<DXKBVT9]\.CE
M45Z"G1N!,GM!@\-U6)B%>:HX">N.K1OWA\:CV>GD]B/!X3MWLMJ_6F5W8!P>
M9M,N'BCWPT194:3U.*YXWF>$@CQHF$HXS_,I6<>NX1!@.:T+5;08P16?93RP
MV(+KV*ELZ.K0?@]GW5M8(>  !?5>/-,.'%EFK/Y8O]F+8:WB N" #=IOTB H
M# Z@H,VDCGL##G>@_PK;Y2LLS]G:LBC]KM%^E1%6Y!C\2C[-*#XX!:3[SNK-
M'7":QX"M+DXD.)Q3)[YUG2QP<*8>WK;:C0:'*NK^CCLS:P_OTZ)2SN")<$TA
MV;L)W6!&M(HU:#+\890,MW_!)_;<6NWC 1U+8)U ,ZWZ30"""U?TQIZFR/K*
M+8,SU&T*LM^4*CB78 A1@KR[.V8I]4[>>F0???"89-[S#\GUPIQ>3X@]J?P]
M_R&0 9IHI\.:L;-#/MT*KG9X!O"J\.9JK7A5^'[Z"96RU\W[<^5;]:P+F38:
MQBW'QXL.W]-8:9;H,JC1>8S8SC'3#@"7>NV'IW0F;&'AZ$<D2<)9Z!>G=>H,
M' 63W08#A$P\-/!N9*%.L68,Q-#/J$YPAH_?FSQ&/F%^6'A)Z6/CW4 BO8V+
MZ$5$+S90# *].$[DS-%<=S'>!+49GPAU.FYT!4*@.KQA;8<'7-RQ#;<M7'6[
M;QFO(,(KB(X/\-03'@@:S*D/3WZD4*B>?=61 J-ZC6%83V5]\!*Y+G.,2YYC
MV8)</+ZK95,T\5@!\&J9M>K^('L)JKYHQ5P4YJ*:LQ;?"0_NQ7-KHF25;9Q$
M/;?3O[G*2FU;%]&F2FSNP54^IYM]D[)$82[WPEBYB@4[60X7S#7^_8+$)>3U
MDO$9E=6?KN)BSU.%L>Q3<(QRSH02_@<-YPO![V1-.9G3CV+P]%SH\$L2\MHC
MA:"(.ZJWD[.9.%L"U8\_8@G#6P(MZ3NJ=_2%Y0$E&GS):O9&Z\\_3AG#6P+F
MI!W5F_DCY]W9'E#]^".6,+P%T)(^B.\H40EA[XW%@;P#X M9TEI(TY"/0LF9
M/@H E@S1)2#@#4>'TZB.$S5>S-ZG)AHMK*,FQ@8.QC'H:V1&,3Q0B62GZP "
M0 2A P@=.$+H@)MPR4@1"?"B&R/%-[@)5H\4!@$TK*PI37!U9YS$R#2%!:YL
M#<QHEJ8TH=7%<9:EUI07N!(Y %/*@&!DPA^9,;Z4MT"6D*F^\6.-3X  '-,D
M$A%CQXP8>S[)Y3=_5E<9>ZY!IL8:Y&8_Z\[R.QN?\.7J\>,2FFF6#2Q]B&ZL
MI?5 L$5%NUI\8T-KB'DY1#B.0\Z(< 3Y=A#A"#34@PA'1-\A^@[1=U#C@8B^
M.S8,&4INS.B[2K;*FOY9NF!<5H;X&@>4']QL(-G8W6YPPT.?WDHQ%(GCZUGY
MB\RYEXO12*B#/1W1C8AN1'0CHAL1W?A,)EH1/%!H-\0W(KX1\8TO!-\XL$F(
MZ$9$-R*Z$9BP$-V(Z$9'PCIN=*-;I,O(H(W  2R:T@1WM2!P8"VXJPDA0AF:
MD;7E]_)_<FF(;_X_4$L#!!0    ( $2( U.V #JW>%<  /47!0 5    <')L
M8BTR,#(Q,#8S,%]L86(N>&UL[;U[<^,XLB?Z_T;<[X#MW8BICK"ZJ[KG<;KO
M.6=#MLO5WG65?6W5G)W;L3%!DY#$:8K0D)3+FD^_2( O27R 23RHFA,QTR5+
M)/*'1"*12"0R__5_O&XB\D*3-&3QOWWS[KNWWQ :^RP(X]6_??/Y:39_NKJ]
M_8:DF1<'7L1B^F_?Q.R;__'O_\]_^=?_.IM]H#%-O(P&Y'E/%NM='-#DFFTH
M^=^7CW=D1M[^_N<__/[A(_F\N"(_O/WAW>SMO\S>_CB;_?N_1F'\V\_PGV<O
MI82#B%/QY[]]L\ZR[<_??__ERY?O7I^3Z#N6K+[_X>W;'[\OGOXF?QQ^#;+R
MA?K#?_A>_E@^>M+TEQ_%L^]^^NFG[\6OY:-IV/0@;_3=]__[X]V3OZ8;;Q;&
MP!$?L*3ASZGX\H[Y7B;8V-L%TOH$_#4K'IO!5[-W/\Q^?/?=:QI\P[E.B&1=
MPB+Z2)<$_OW\>-M*\Z?OX8GO8[J"8;KSGFG$,8LFU@E=-K\7)<G!:X#C)\#Q
M[H^ X[\UM9;MMUPVTG"SC>@WWX]&^D"3D 7O8\V0FYLU@OTI\Y+,!/K3AC7C
M7[#,B_0B/VU2-V:NPJAFS"=-:L;\B6J6C^,&]>%% ,U.02JBB^"I._XI?Q :
M[%"J@EZNPFL-T]>,\O4HUYIEV\P_Z,0VB9YGL#2]_>./;P5,^.:OU\S?;6B<
MS6.N++(PV]_&2Y9LA'XOR B8L@6EYR6L"%8)EN0=/NCRP'9G49V;2DPZ97]"
M4[9+?+FH<M*P[--X]OGIFW\O:!-.G$CJI$;^7[^OT)[V99X4?/82OP=;_L3W
M/N,KZC8[[-<R89LA3&:#.2<9P4$<C\F1J #^M# TEE[Z+'JP2V<KS]M^#S+T
M/8VRM/AF)@V>=_GB_=_RK__ZM/82>LE7]^"*;;8T3@6D>9)PWE- ?+FO'GGP
M]J(37[PDN/'"Y,]>M*/S--UMMO!6^OYU2WT^\Z_#ES#@XO[(U<"1?%JG.U#.
MK>$S/5\*FB3(B9)]2*/ ZCRQ/]C,V0BJSML6%?^)973!;L*8V_&A%W&K*A,@
MKVGFA5&ZX.O'SHN:E/VP-S%J7XV":8$&%&3!2(F#E$!(CH3D4.PO!@,'@8W@
M[$A!2PL:L^I3S&',?IR!E13R[?:&SK8TF?$/&[XZI3!)9IGW'-&T2?ZT-(@1
MRU&$K4CKCV1&N!7,[12 0OB&B5P)*$1H'OMBJF>LF/X!,"74OY\][](PIFD*
M&)[Y1!/J'"/.:DUI%>1NDE9$^/=<A"]S$""\)8@)":_BR/2*[1!VFQ+8/\Q6
MC 5?PBB:>7$P8]F:3Y\PSOC A!S%S$M3FJ'D%]6R5G$>A,"*=/^!2_>''!/A
MF,@]8.+ZNL!$Y@+3A(0=-XR]LC]B;,YYQ_H8IK_=))3R$:=<6#);.]8NNE/8
ML3;A,STC@>9LR8F2,*=*X#3G_'>LG8-M:L?:/X*6YVUA1=2,B$?JLU4<_H,&
MMWQ3G87+$-2+5+ES_^^[,*'!/ [N^-=A%&8A344'.7]V20*=%T^VS%?C])#S
MU!@NT_/3> >Z9_KDN9FUG-!TL#2G2#S[5H:]:<*LCY8IX_R/LR77M+,74+6S
M#?7272)^1=GCJHUI-<'[B%JQNO_(K6Y8LHA8L\C'&HP)&=K*X]-K6P]CNBGA
M_=-LXR6_44%REE)_EXC9A!%=M::T"FXW22MB^R<NMA]+$.2I!#$AH54<F5Z1
M'<)N4P+[+WS_^<+_8LD>(Z3MKVL5S%,R5H3Q7[@PWA:$)R2 '5SO%;H^5I[Q
MAN4V#N@RC,.,WH4O\&?A6+&VA5%$,(%-30_2<]SF]'3)]<9'.\<16Z&:S_4K
MV0VISCA#^Z-!@VIJ#?^)?\%\$3X<P*%*Z=7"K.BJC6E=W_N(6EGM?^*K_1/
MF D<I.X?G-#BKSQ O:; ,*Z;DMYW;V>>[^\VNTB$N<I#$4"3T#4'Q*=5<<@=
ML12UDQI%0:N<HY!8$?YW;[GTSRML^2'=51U;$6+QYHZ#^W9"4V+< /?.$PVC
M9FSR_, WCBOQ=T*W+,G">(6:(OWMZ)T([?3LB/L/H.PE O)8()B22"L,2+_@
MJG)YI'B^WVPCMJ=4K)X/G.]KOJ0\<*[?+Y<TX43E+98FB1SX*D8(%4F8EKLA
M6(;L5<SV$;')*+!(8XH4: C N2 %("(1D3<?69RM>U83FST.\EL$#1<Y.CJ]
M6%/"BJYM9=>"G?CKRSKTUX3F>%.R\?9D6S!%6& D6R=LMUKS?RGI8M]W]C74
MT G*QHR/9>>3M&<6WNMUF/I\[=XE%**!+SFYWXZ4U9!7D.Z=KJ9-*Z?<LN/$
M246=_ KTB0#P?YQX"I2XS3 L=!/@#4;C3FJ6&5O"/C/T12A8$$8[L"V/7I9O
M!3)076-<N!8<%L/)1^&=0A0Z__6JZ@-?*<@E]$&$0U[+/AR_+M][D]]2F-)V
MRX9LC0Q_UR@PMJ/FO2C*LPH \L)0F&V3T*>S)4MFW$C@^]&_[\(T+)Y*O&T8
MH/2$<1168O5'HW4;Y@^NE[('H!PJHP]Z0'@/A&DXKWH 3SU"#R:I(<Q+%?J>
M@691L6RQ"J_<@5-.KAB?XX1Z$1Q@_,(BR.3RP0MC<-/=QU4(Q3SA?8I7U[O*
M_.9KSOV2VTLMUJYI<DA+V10LXUJ K_"[$B-9<70I>0-.0YI^2_BDAJ/Y-!-A
M2_PS2=U$OU@;?69[2!U?*.*J)E[1E/\BM(SO)<D>7'+>ANUX4US3E,U@UG+C
M*%Q<5!J.=E*7FL#PESV "0V+^%7> S(7/8"%O&QHBFNY>:G2=6]JK*B<\QVK
M(G?"GUG$FXG";&\[+T@SY2G<LVI&:"TWR$M)]OQO6?4,MNG,(%TCZ'AM/_U&
M/IEQI61E64<!<+&B#P(ZM<7\]#OY[(*#_RK6<9P8Z5K"1\B&^\#E*Q;#"3OO
M,_^4A@'D2>5?%U&#^_PRE7H<\L &]845*Q(V/3F+FWM^"0<^5GBF$KTZ=)RZ
M@U%1S'>\^M$T"S<B.LI;K9(\8R6WNY,L_(=TMM%7, )PAUFF0;A8!0>#G=I*
M^+[H )F7'8 ];=D!\EYVX)Q70[Q(Z5H11\J)Y56Q%B'?O=JU/XA<Q4X;M'6'
MY90RYJJ)#OQ92\KEKK@E>(7X^4(;52"<K*T=4L'4667_9GKM>[:<+8M4@\4<
MSI_EDSR>>;,$_-;@J1;'TBEJ1;0#Q=*M>!V07=^I/_R%+6L9-/,5,W\Z@',>
MCSP6W1"!(.DDUTA+0C;B:K]^R;&=&"!=\Y4\H\E&& $1BU?RCQ<.33P+1]*I
M=_@21F.8!& E"<$8H&Y3%\!5 P _ \#"JKYC$(@/?\T+^"+(X\D[?'&*6L&H
M(*%S)NB3#ML:X-F+H*P,*+ UC8*,<6L??MMS>,_9P9/[&7A"$L\7"8MKS^E3
M!]K16-$-VE [5Q27LB=@0?S">S++6(F17/.^U)]^WI.KJB^\R?RY<](:^N4-
MK4(,"9&+4^7G_G.WYR'G;@NN2]]U'28;)3CF#-D(L.%:XH4FSVSP1:KB!#D*
MEY2\V<!%J?1;S(VI*;($>9HN>?$7ZB5VU9M%<3\^1;<P8.X/S] I./)'GE.A
MC]4/US03G$!.GT-@IF=D[M;P<D0_3^4P3O>X&LH<TS58-I*]59\PVP>EEHRE
M@#NA:#\;W,'G*1K<:B,T*%U<#]O=KR$'Y^4+OD:F2YKP"?B>ST.H!B>3=*>W
M? :*60D?8+H.BL@814%KB 8*B</,;EC(FC*WV>,8(FE"T[VP"W( F=0P7Q")
MFI2PB<0MW(MJC+,:'S-NUO0&S&@86/O9V<3W,R:,\QDW L(7K#=O) U+N=PZ
ML3A/\5;\1.X%0#+/ 4YR=1\[X"-RPPT81?M3RJMVN[,=_)K?!7F.//^WU%\S
M2'V48X<KGW :N&$!Q45F6\!A:6J.QCN%Z5MS=9#/\'M^X^H2.C%[DKTHIO>#
M[ 7Y"+TXLSFN3[I&Z '-(C/=W4.;XQO3A'G[W[@G%H/)L 6/Z+,-$UW$UDVP
MZ]@HP3)IV52#\'OF'FX7@?24Z[-I8//"]2?$_=9M+UP8T'@REBR2/CA3,#@>
M2XP'6X=IQNUH&/D1UL*PX;0_R;8T6;)D(P( )$"]LZNW?4O3JA7'%.;30P4N
MGU#G-9'Z!WG$#%(<.<MV](TH?A U%3\HCK_:[.<AKR+M9A42MNQE%2P88]%,
M'Q'VL00R$T@:;HP58)S8BX-DC8UAKNUP+W]-@UU$[Y?-V11:T_!"<(@,)JGV
M\0OPBO=EP+5 $1OP90Z9:2510(>X3P$^7R!S^$3@O^C,#7U!RFX<>,)^%3TA
MKE/YVA ;YD 6+,_WST]/8#"D\SAX8!!0XGO1T^XY"%_"%*!^I)MGFK1,W6$O
M(V>A&A'3$^KS$Y$PQ(%H"834D9P$5/\JL;F9( ,'AXWC^'2.9EZ*"2?R<1K>
MAND!X?A01@WL%#9T;2<RU4H%R6[/?->G2:8,',5@!&5B]JL0B-RM9LQDQ1$Q
M9*4. S,1P_3 _7GFEBA2&@88GV.&> (+=\;*K"1"S1S>PH9O:+K=FEZY<2A<
M+=W#T$YR[<Y8F?-'+.*'^0Y$Z:*GAX=S7[R18J5S]1XC*Q.ITMGTN_@!HQ0,
MT799V;,/XT1K?O+GFYZ!WR8Y[TU)CNZ2H</$P6HQT82^T)AK'F#WC&WS^ AQ
M!UH^E%^CEN^AIK=VLN9+E:+@.:QL*H(5!&1RPR%S2[V #%D$'DO(Y9N3G,WZ
M!0570E7#Z%N=P[FJ.8:K;;*JM6]^5G;C<#O]\G7T>/:=S3Q3'&/<A!HR<%9G
M#B02$J>_14HQ/L57E*T2;[L.??[@"BQX;1,)1<[\O!H$R^TT$YFU9 A"'G?
MU[</)5;^+& ]GVF'DPC<+!PQS!/P&M?=%W4'6W&/"^TIQC6LT3L\#(!QCW"3
M%[A*2'*1>X$OJ@MT$_;[(L>VQ]<[9L"L+F]!F!99I?-3HL*TU;:D*9,POXSU
M0G&[=%T?P!,%/O,MV]FL5NJ#C5NA!H[@R+D$PY4N6)G)]ZE V#@M^I_&2'A[
MJS:$-24+5LMD7!&W+X@*[&4#>78N]=Z*/ 9IENQ$-X0/%BH.Y>O*!]Y$EM[&
MLO3E?]!PM<YH,'_A&ZD5%3]><PZ4*<':;)^IX;-=.TYW/RRE"12$X;[AEQS0
MS).(R I^(0$<V,$9$A%G2.1-&). 19&7I(3OM8FH?8Y/)WB>G,;%\$^FP_]D
MHX6XC6!C5DRM8J,Q1:RCKJ-9*3)FZK4DEASXEE[3SU:*QTX3D/Q:P+"[G1_*
M^7ZK<%P2QLE;AW^F:0;7EZ9J'2+Q3<XZ'-@/2]9A<4==G#9%WC;]RBQ%XUR?
MFJ4XL,/_9*.%L!1MSY"SLQJQ"MJ*U3A*HKZ:-?Z&)4L:9CLNYM-;X#'@)K>Z
M#^F$I:4]A_25+>AF&3VUU7Q(;_^9Q@F3?\+*=#B[U1NE?:TLW7@)<AMN<E*/
MI<H#)D[[YW%P],WG.,Q&!:(8(:DG1$4K-.?!*R<IW2!]P,F7T(/)![B8D9GV
MT!>#@O#5V.F?6/PB-BS3L]*'0YN<C:[>A?,W'-7[.BVST>08;84/X"GSD@SG
M N(*7MS2_*HV5.8Y_CX.)LSOL[/8$9K8BKV.%:2O9O4N=YB%N]&5*^T4P>36
MXA.DY[_DGG1I6GI^#,=_DAR/(;)6% A%.U^$BA9JV7*XLLO)9]-=TC:^EK4L
M[]V&)A!(\>#QE?@3RVYC/]H%?'4(L_65EZ[Y?@_^@7[QQ1MZU)F<<'R#2!V(
M)VQ:I57(B(!V03@X4J C7S@\ L"$DT)\J$%TF\U0PV@R_4-D>8X\),RG-$CA
MTN^3!XZ27V@4+-C'O&!\E7JR94X,;P Y!]0)F9;Y @D!>2*I!R6;V))LO.0W
M*E,4I"46)Y*-&!,VGM&6)5>L/0=)7N3]=<CTPM<A;O_'5[LDH;&_%Z52/!$^
MP2>A^"N2:U[PMUV:P5+VB6;WRX7WVB+E9HDA9X094+:,8#/H,?;N5/B(.U $
M>,3/\9&L@D2\$I,3+61XSC"[ _C5> A*%\FG78>I:YW^Y+P#1SC/WS=PU*%I
M>09&<UN;8UW=.W"F/!KM"O^*_2=MRLFN\[II?&U;UWYX29=\[7RD?N2E:;@,
M?9GRJ%@>YQD7BN>=V/ LV /O<7Q\ TE/8UCK&$74M)J7N2D/TBB2,,]?&8G\
ME<\"-$F.4;NQX<:-'-,['-8+F7Q@+S2)Q0Q><>N1;WFA'D>U >XI93+L=70Q
M$S4R%LJ95$!(@61J!4P&#@D;RV?+(GL\N<"',V=^*+<_F73*(S2XMG:10CZ:
MOBWS?310C,EIDSN'QW###,GYANW [5^M;=RD%$[46B9BPAJ62%@:G6@,?8+/
MC(V7PR.#W"?,E=]#0K?2V$W%04<4I??+^8L71@#\AB7@2AYTFC"Z;0T'#6@,
M=L\@-B7,Z1Y$C!_.EC,*36/TU3CX#I-46/?O-9.?G'OO$.;Y>_<.^S,MQ]58
M7N-SZWS%KJJ6>>8@#X[C()]DRQ)N. [8F2N]@P[5Z6C;?#1.3GQ:VVXU?C,4
M$[^:9?LP2X#U9;N9_.26[4.8Y[]L'_9G6LLVFM>C0W4;\IU\Q2MYR]1SD)MD
M(E>8RX.P6MU=T;4QEY3'-#KZ&C*&N,VZJ26^>JGC_!*R@#CAF\2C!K;QKO#X
MT3H7JR37 N]?(70YA0X=79S*?Z$/7!UKO_"+HV[;)AF&TO@!<E[OE%9P&JXF
MYK]2L@5,7\6=1*2PZ%A%QTB ;>=\[O]<L+G/U_Z$B@7_5N@S\4.;XUWU/:Q3
MO:]]6Z9\+Q",#:ZS=V,.V![X]VLNO>(80)ZCR3I)XOI-J-I)4Z<!RC+&T*P]
MWX773#AN'QWWBZF=\-J&9?-\=Y2]@VIFT9M 6.+8WC@N0W)>Q4:^TD(79U#.
M8L)%*^KIR>J]JN<H@X*6C6G,H&]%];WT@LC^<;N$R!Y>D**/).^D?(1 -PGT
MD_SYJ\FQ,H%Z%S:K6IC:W[2'=\#9D>IN1ZT577N?;FK.=D+=L+3LB[3U7-LN
M:4+!4DBA[-HL#>&WY9DL[EXN^0(TCX,GFKR$?ABO[I=E\9/:H<6"(TN;?[IF
M&R^,6Z:Y"1)(': 3BFD%4972J9$FOTKB;KS]1D:2V1B>,]L@W>^R-//B@'??
MP4G 0.J.-D2**,]E(Z38'1<;(&.<1M\6+OQ(K$)FYOCE+!DZ^&JQ-79.=/<W
M5.%IW/6A1&%D#</+71K&-$TYXF>^?@*.1^JS51S^@P:W 4<8+D,P5^?BU"(W
M8@.^*-_QK\-(6*[\-[[<\E['4'";OU/\ML_OSQPM3@XH8VHIVD%H>E&RV)4A
M^G/2'$9XX7):Q"]AP,<T#/@$AGY]-;P)F"]L:X%(F3V+-26>N&P(6_RH0$&\
M).3=7.5W#F,2QFN^;H&_L62DOR=OO)0$=,GY$7Q+OJQ#?TW6_*MG2F.XNI@S
MA7C"?Y !*>!&&@HW**2#OB"U^XW\,5]%8$W4(+6L]9A#89K:/BOM67YKE65:
M/*]:-ER&8)C:>6F&:]Q3TE'/Z8R-5E-",\1Z-2H)EI5%@Z]H_AJVA6+U/(V<
M>BVMNO EDE^!LAM'8A]SV4".69:D;G]^=1/ZD6L:OFK^A7K)X@M;K!.V6ZUO
MPI?>T ;]!)#RJ@^(:1&_WG$+<,F->,)B2O8<"#<*!0RRA-P5\(V;$R4#@\G,
MCY#E*?6!L>!+&$7<^KSE^XQX%9:&Z768^A%+^1K3=\T$UPAR:@PC9EK\"S0B
MQ+3"0R0@4B$BO[J^,X(<)::']<ZN4Q6@U>]*M;XQ^B+42<LV;SF5HCJY.TSM
M#&^\H-3#Q7/;"W<&(%G9!@]'X&H'K(YT,N>/^KIDY,C,)<?QF4W^N3P.B/FI
MT]F %8%S4\1%5YSJ8A0(5^IX$%C3&KD@]D^F'' "HU,_C)"":9^H?^+#Y^Q0
M_93X!,_5*Y!?P]%ZU9NIG2"/X3/"RKIC\6K&W]N<S1'[& 9]%:?L<<F [[ZZ
MD_8&56CIL+U-K"R;MN\WVXCM*7VD(DET#7IST-?@]Y &9&_[IE>%N>\G.S&U
M*LO%B1FGSFF&9M]$3]L^T=<L/^58?*'1"_W(Y]$ZU776IMJ\X9.V/A@VSMGX
MKJ4\9&,)B:BCM/#:APYQKC9L/&Q/':F69!V^A??:IZ=[G\<*=UN[IJ554B09
MD"1;;P\#ZD94>SG+!K/+OC")PA$/DHV]DM3Q,%Z,&AJUY6%OIHYQANOJ!V)'
M59!V/1FZA(,-X]34W+OJ-SZ,)AMJI>/^OMZ9U/)L ^[XRICUVIP-U\.<E>?4
MS0X==^7./H55NZHP<]-M"BFLRBB.4S<-#12<- /S'FNE,CK^1PL:FS%#%6!2
M(2Z"VPK,(O:MAIKDL*<7:*17&AJ#DPP,L>TD0RP*_7V)9?Z<9HGGMR83ZGX:
MFS2HN55KR8&:R:.2 .GJ"7[3 4NE@.$LMT^/C+"![+*?JR>@G[Q-3UV=ML?P
M.7,.FC,M^X(>$03=ULMIY2-39<ZY[$PA:!HFJ*SC!YFX1(C$_7+);>1X!7GG
M=&]2!Y"TO5]5@#;YK:M"'ZQNVXSPU$W>S*(K\F!==H:(WER0HC^DG\%3VPH.
MF9 Z=H6#)<*%,GWN[]CS<<>*O(9Y=_C;&Q8_9=R(>*!<*%L]YN8)CE&D1H!9
M5:-&>H!6HA/AIQL56G1$JDW8W\N^$-&9"Z+$7),*U.PT/%:?%F3!LO*\C?U$
MP/>B')GPCAX643]=%VJAOBU*4E_#2&4X'H#Q\/,\F(>D( V$Y?YJ\(W)6B2N
MO=4:QY"9&QC7&;4?$K:E2;9_X(.;S6-10W"[:3<?AC>@*X]V*R%G*;1;$6G)
MGJVCO]H29V]S,!>$%C!J4]WWMB&?$'GYH6GDT^Z7RZY4VHK,'WF?HW*C-Z^^
MXC]5%4^Q[A:E/+UH)Q=Q<*C+[SK/BNP1Q-S;, K,Y@E2ASDJ^T!$)PCT0MJA
M586,LB>DUI7!ITK3YR[R H+WO(N\A 15CHG\KL!+R3>OQC?^8UH;C&T^&)X<
M!:FX,AB% P/&P6T".Y.2V9>%<W&EO'_=AO*:3W\Y=IWMVW:4'..8O%_D&+!5
M-\AX;KGQ>E2X\T)+Y UD8W(8,J1USNCP:G0/[;D<IXG_0$GW,%[)?KS3?7S6
M0<+V<5D#E,D?CS5@MGH<IH5G;K28^(?DV*>BR'1/(1T'7+UC;%F=P152Z$%&
MYZN$2I=79QQ)_PM(5=/>L&G%45$F%6FW428*7&;#66=9MDYOC/9$Z_6_@)2M
M]H9-RU91#""J$#@1* 76LN'\LBQ0,B* :\[\2O)QFL=.Q37L9:2@J1$Q+70E
MBED.HR'WIU/U-G LV#@&6Y;2H_Q"\EI#[K^IWW>X#J,=?ZS*37J;T4W:HR+U
M-HZ4<CT@C/MY!1RR W,U8R() T=#8IJ14%X +I-K_>QD%F@>2V9V@&S?*Q;3
MN646'/Z(O3<L&K%V3UCAL$TOSHQE7C1L)[A@CL\%CP:6=7/!]FD\YQ5$=7?4
MAVAZ!'NB7FO*M) "+1%<[[+\0R/OF I#',E!9WWCYH=&RH*=&L,U:7!95[B%
M@PT2,::V;\M9OSA1>TA8L/-;]A5]CV'.U1N:,SW8\GR[H*FX+3 %'7?4_$BW
M_%?AM)'GQ-L<AH/3X2Z!8*JL<I2_31;7ILV^S4\L?J$IV)3BQ%E8"O7?KUB:
M?6+97VA6W3%M48W&Z8W,%Z<=ERT;TU@',&;KA+@Y\DRD/.NHW/L7I$1>'($
M5/YM1O9\@UFAO2!SD8;S@HC..4W_9V["-:0--#SN7XN.E(= -RS)OX+GV@Z&
MW8"8FC9M!'OV*K:Q5Y/2NYKX[E89YT?32Y:06C=<'E4[FM0V-+:"Q%A6XU>[
M-&,;FHC3 PB(7(?;[F,CA3>0"K*C9?.GDI(T.:#M]DQ(A=$,P3WKE]Q@FH!:
MZDL#U?$D^AK:28OF4ZD6)-V7$.QB*!O )=LZ21Y,)4]LF7'=2H^.-+NUTY!W
ML7I*A89QC96#( 6*BY,S;<?J:]!(L%'LM2R@U?&@N%)<+OGY$3RL_.E)M%O:
MI_XTM8H4ZI'4K9Q=MUN\[G6MKM%CAH;$?A7Y,*-WX<MI1,KE_J/W-Y9<03V4
M[LKR0UO 5YM7I62A CV',A-8&F*4GO=$X"$"D./2](-'AVE@^73$N$+9>_2)
M;$6_.#=1<RO2%P<"[?Z,%3M4:K+=S_^I7=YI+28H_K/@:.=QH'3^;Y*4]8*:
M[9",EU 2%TN M-N)8G0XM92[5!VCL4D0T+?X_KX+L_UMG&:)...O+BWG]Y4?
M:+)DR<;C8W&UAM:.HAA%H5_( -=6NVFR^% I%B;4#^,!1Q4BX@M(#45R5P!+
M%!<D2PY,I!' U<K]ZK@].FP&TC(4#"?=#"^9#/6^N.*,J2].4#)&//CQ:"!)
MDM] X+]3P2O^7LFL>EX'AQD=)C3X)\%"4P)WK@N)XW7B3)8!^UH>6R]F^IS1
MHI&K^KV21W5=JD/7DBVGGI(W<!A.7[W--N+K[I;_GK%-D68G(3N^O1-/7AQ]
MYVTY6C^45\434!UI_EP=6N8E*RH;^/;KUNTN5;?;JSKESJ/=O=GX#/;B3KTM
MFQM0=_['9O8Q)9[8SBA ,UFB\HZE;=+0^ PV;T"]+>.I LK+@YC0K)%0$1>Z
M5/&:2F/0.,Y,B2/3<7W/?;Z8[\32.M^P) O_<;"LJ_NC>QK2[P!O(6@K6'(X
M,LRL,MK_,2E9:]2)>B?M>_K[Q%+-V:_$Z^E,:JYYAD_@VDOZ)RMOW,+RI7F&
MH4"C;R9#WJ2-F$]>3<3XY@6L:S=+G**TJ,VA$VY.9[Y\2-K-.=77],\9T;SI
M62.(3$VX#AFK)EX-W+(L8(]\!B>ASV>PR%3;&=O8^2Q2E!K;-"T_%=$\A;33
M0,5NMK)!O+)]\;YR>\A4)IWRT_,T]BI^<ZLVG:=Y8ANG4M3'7#:08ZZN\U7Y
MLCMEJ??YL9?DCMMU'&!ZD:>Y=RMD_5QONL74S4K+@O:!L>!+&$4W+*'A*I;9
M]/S]@G,ZE1=7/GAAW.$J&]X 4A35"=ER'Z@CPFQJ3/87<<<QAT'\' ?)*B#$
M"_ZVDU=6W-BA""%DXSGM:*H6E72J^M3SBOT]LU3IW9$3M).&[;G9"6;,M-3<
M2\2,+)#4*A/62I8K=]/PE%23N(;9.(#!CB9B7MPIN-XE9;;LGOG7]<K(:=?4
MM''/0TZ;>#EQ$@CJ(CQ@BRZRH;=+HZ96 8%(#$2E<HCA&=4I0PT3J9^+(R.E
M+G=I&-,TO6*;YS"6A3 2]A*F_(,7W<9B=P7?WL(5>R^J9K0X6]M&D!B\G-M7
M3/PD/Z5A0).FTRS[A#'1458 FI[D]GHR.,9JHOQ%:)RB)Z36E0M2ZPRI]0;N
M%HO^U!?\JD<7M<4?4HT4O2)?);.1Y=_684IH)&^K)FUQ;5Z\)QOJP9U/\:!<
MTFK;'?+&2TE EYPQP;>\'2^"O"+U59"W#2=!_*_\99'JN1P2O][YHY#E+V&V
M)AYY+D3#KQ@O$L1\68?^6A )<W'P*G'XPH&%)=\=1+;95<[,G9!:MCX;>EC=
M3.Z[U#[L9:1%JD;$]++5I%%)A</]%?6!8\'&,=CV44A;Q=OVN :55["'(AU-
M&S\9R6F+ L=EN>,+R/./*NRLM2L(2^6.Q:M9)*X/NRS0K"(L#,,V1\Z$'L>!
M)B>!+8? F%V_U1V^7:#2!'S*O"0['[COXX%QA6I@#7M)NCPB;NTW+_YM$6[H
M-=\8I&%/4:CNA['V66.CQNTQ3I4 65+0=7MXV\-:-HQ?DW*A7=,E31(:++S7
M6J4T\QZT;KKN'6C-^,[0?];<$<<>'5W<G93WK.@4X;TB7Q^OS]!Y%A0CDO$1
MJ96MA-T([TOPGTXTK'XVXT-3$=5)K9Y77KI^\,+CHUP+E-ROD 6B,UP3"^BN
MSS70')S4N@?=(&?-SC-<VGQ@^I;W]C_7,'6=:>CDIU'N[%]5%SB@&P$-+O>?
M4[@T(Q.$0T 4%X\7L9SV5.7%-X2_]#Z0H)U$\# AO)*VJSOGV+%@^AAL.P7'
MBQ=R^A&]8<F3%]$GZG-5"/"NZ7-6_=4BOT-?QR;N4"1C6E9E$7$ 0M*2**HT
MK[$.82+((4F;R-,UL:Y@;_MNA@^3J?0K0^<'&\M8R_KC%QH%"_;1RP#,OE=?
M]#V.U ]MS1K/\2,ODW,#$I+,.Y&P7HZRH6RR?:/.2V*^+D)J*G&WK,=BZGL<
M>Y^NI5E[>8&J!)D_N[DSU\=8-I1;C@6I+^2J]WE-HF0ML*H@#+'P\JZO^UBJ
M?B9WB-4T(J;X+C2A7DJOJ?SW-A99]>ZW(N@P7K6?Y(UH 5W(2YF2K0M? R!A
MS$^C/488TW/?3W;<(#@X (D#F433476SX=+'-##8^33-AT+FB5MXKS1]\/9@
M4"M/T]X6M$W35DKFW2_"^,B Y$3$LY_KG>*IR,J11UM\C?+!B;VB]\N%2%7[
M:0?1)U?>%FC=+R\IGQRPHM%@'@=_EMZ?._:%)G?A)CPV;[6VB3FN&DO;RL'4
M6)"#STSL<P6QY%0@X0A$PB02)\F!P@\"*I%8Q9*4H[T@ B\Y%PYASX\HB40_
M(R +NRW #8S),TW'DF-^Q;%GP3%:<:ST5&?B4(?"NKXD'O\CH72VYT\>I+#.
M#Y "NN5/PGM0[H"_!Z<:7KS_77KP="A_7(9P/"C: FSRONYQDP!&G'R)),.0
M37L;\M[\+LVO,($%0D5>$^"4@[,E;:J,&9$S)\K_\W:K7?F?MFE/^5>T)ZS\
M*Y"65-L8KKA0_@*O5>4_AD-XY;\3_?Q/Y3]9Y=^@RL8I_S8YL[\QE1N1]S+;
M["6-Z?)D#5!\&K_A;&K5PA4[&><AHF%"Y:VFX4X@U&R^389@XYPZ>9/3__:"
MB&-'5[OG3G%A ]DW!:<-1/]@7#5-[^ETT-3;-WZRF),C6TEO.JZ91B[W.63:
M66=9X$JW93X)VESVK<\A!>JD/5ON]Q/"&,VK 3TZF(,5M(ML[6[<E.T"P93Y
M9/L&,U?PB1=Q@V@>;,(XA#/:+'RA.;@6R5=\"WO?N;MUX]>@)7EA0GL' -S<
MB57D-4,RT++ 0> C!P;_P#7^%R^"$.UY=N4ER9[/BJ;:NZAWD<*G1,.T"(H
M?I _$51.*QQ.)' 8V]DH7DXD-*U6;^9SS'?/;!5#"-<O+ J$Q[ UH_+X!C6'
MM_43MF5EX!%BS!$K_!A3P FHYS=+@*HCDT6#O"H$#PYE^EEH <@KK54+U!NT
MJ@6 L&DM4!-W('=.TGXP+J.E_939(P^:#FH3%(F7(5528W*2(:]@CHEZFC8>
MWYB3SXOAE,FU 8%BRA(;G<(=4=3NP8&?/^.2)&XD,N'J[^JZ P>_JHPQ#(]M
MWX"*Q"2@@0@YO3RNNMR]61[V,O;VDQ(16Z:>&AK432)#_42X^WNKW"AUT]2E
MHF%"Q\9Q&#4=4^I_MV(OWP<TE#.1?Q 34$P]_L=?YYR/ ?#R)O)61[.K]?>!
M$^BD'?/W@7)B!*A9%8YVGK%>1MAV$W&12^B:BUKX0N6IU">:P<GN:\_EGP%O
M8EU$_12,.XCJ$$A^\/@FIGFXPNNW;AQ% UC/1O!S.K(X7 ;-R9Y=F7-8^%V%
MNVKB9645N^*;PSG?_%ZQX-A$;/L9L8;5FS$N"9P6 6($J%E?PAHYQOK88%]I
M;%@L-C.R,.7]+DLS3X1YM6N-WE?P:J.U:0MZ@],F*1"_D+=74\(J^N1-&.=?
M]RQ;-OJ&SO)[Z44B &^"O1F<!'AP7\QI^OX9P3#,&^ESDW6PHX8ZV+ _@K+&
M\UH-^?F2;R__0KWDAC.\R1^GH3F,KVX$62O1W"/P#7;Q6>4%PMNP6%.^K '9
M:7<-Y]F<5]G9:E!$1*BH4W!!Z*L?[<1R ?'/L2\2I<%/XIQ\5=9\BSS_-Y&8
M;;U/0Y\_E.Z>005P;28RL2T%,T@4+JD(%A*5TS-&GB&K6^&J)X+1G/PN$:^D
M?A%QO611Q+X  5E+-:O_^AUY+U!22-K&&P@W,H@DCG?\":F+4_*%FZ+E[\67
M<!%?9I7CU$$)ENUS\)E,5,>Y4_5=9+,&'@7\9_*&\SX2@>?;;<(\?_VM X^O
M#BW&=,OL2$5?U-_[,?B%RU'[B4K7<QC5W-2>^7C2O%SBC]<$J.+/2_2@QZF2
MQRKOHW?4(0=SHE,NF#*[3&U-I8ZY$2H,Y@^W%*^Y/FG:IO8\BMFRMC1I?$.2
M:U9)F !EPDD3H&U_,]O'5S:$6<Y#\Q_X(N:%09$W.C\MF,>!2 @A%+AZ!I0A
MC6D+XE<AZBXOB@HZ/2E2-/-A3*A4#J4,[IY<LI1!@MIY#V(XURU/^<.\@L?Y
M!Q_S&!\(<NF(DL0U@ISBPXC9FMK#4&&FM+%^CYG*!5FRXG3ANJM7X)JE'OS'
M;2Y.I& R/5PW9.5=YW:TM!UD#?$;_MWQ[%1Z%F'GM;9I>JX5A M+3Y(F@K9U
M0Z^?LVP0NZP(B]Q3JXC*R9.C!:5LT;:8B W!%(3DE*>-(M+"*,,"\E <+;1L
M&#N?&R$<!^U9$XU<=3C;)G9SDRFSR)!0O(^S,-O?A!&521<:Y*'M$80H'#=E
M/*A8T"- ,$^;8GW\6[G'5%AB=-3?;VBR@L#VA'W)UE<R=4FK '0^C9:%QE8M
MB45!FTCB)*?N2$2Z^<L&,LWP&K+@S7<L'?6?1ZP8T(RUA0*(.5L=#AC&^KA@
M5"L\;;PH*LKZM&J#QJ?06N"@-4NS7] D!5%'D[Z9C4R1-V;E8$VCJ&]1:'H(
M+P6UQFP) 9!TK/@;><C4&&-8S=?N+=UQ^;O-Z*9K0]GU^(AEH*E9:\M"_>K6
MKT">"/IV$^XK,YD-Y9P] 5HT9'Q2>52/X"QLY'5J%AI!>A+RLCA.ZZ3.+./;
MS^2*;WE7+&E?:QJ?&K4)+5NSN ^%Q)V2J,.MZ"D;3W:C+;PQ*@?Y4?EC4:3S
M*?.R1@^FRN-HR6ANUI*(%"$.)74BR3L2EAX6LZ%\<Q[F4*2K>Z0^#5]020A/
M7]6>A[ BX2Y@X12+GO"$47T<<X)99EU,%'MD/?%B@V0IY5YL8Z7MR_9E'=]T
MP>9!(,)<O0@*^M[&5]XVS+Q(1/<_']]-?H1,66F8T2>:O(0^E7[P1QG6"P]T
M)1>S119[P=\P/-,:0ES*R&_+^S5T15"/FUORML:<N1I(HX;6PGN]#7A'PF7H
M"X0]AS\]SZ--K99V+=E:D._YD+S;0Z(^+K/!K#-KK7/J"=1X#^CK_Z+M^[:6
MY_#V^6%[M@QS294(LH33=661MW"3*;/(J% \TI7(6AIGG[Q-D[NGZS&T2!PV
M9TDB*J($J#J2AQ9.,E7V&)6&:[8YS;77]C-Z]&4SED;]5TG-OC^OD66LCP^&
MAO>.;\ B277^&C:Y:%J>0 SR44NFQUF0(\5H T7[8]W&/*; $:,3FIN]G'5I
M_L]=&--WK;.[XUGT5&]HT]*\STE>%!\($"?WL2N]W\5=-HAEMKT$M>N?]\NC
M.Z)M]P[47L+NT#L;MY9ZKQ,%*N6>YGYA"B;7+X6S):E $(G"97D=1:%B.([:
MT,.0-.<^6; O[396ZY-C=7#5HFT-++(8L80 ;;?:MX&K3;JWC54V1.2!I7Q^
M_?_AMB6+5?_#8P7EH%';LB*)$T[=3<HK!?8V24P'SVP(#1S=T?M$5'B+_5ZQ
M:7E\K. <-6M;= 1YT#,% +?"T\;D)O'IY-S(Q!IW+%YQ2V!S&T/5QO!%I'K^
MX>V[']IS;"B^@DFWT=.T\<TB)S];</JD!" SE@,$?!H.[;TRD;9<=+&- 0XR
M=JA*&<,PV:PG73WEX+"7\#YVAVD'"X>[S#[X)+,/2A2D!L.5_UTQLQV&EY9W
MX@+2(]WF*?NAN.XCS2"?S?4NX>#D,677T3NB!>0>?0 E6QOV 9 PNW<S/1Z7
M J  D\)>WJ^E!W6R?\=(']/ X$E.4ZE:1LW3PR:,3E1):EHS56(R-U4']]G0
M7'6>'!8EC8,G;A.[G8>?WL8OW-9D2=@Z597>T19P6FO;7:1I#82>$%-<K\9,
M-^4N6(LI;9*:SF#25J89VOHL$@\LX*?]YIE%1Y.A]7?$AN:@'=-"GA,CDIKU
M+4HSSU@O(RSKQ?MDY<7Y,<H5BU,6A8%,!QL'#S(':'[$<E.DS7TJDNFFUV'J
M1RS=)71!7[-+#O&W%E5JB@Q2^^J&8UJ6ZW@OR %BD<>OCAELC!(UJ6"3"C?Y
M%9 3 =UN1(5Q>6"V!MG%SN,V37=-EI7(?2M367=N.X:\/V;/H4+'5L4,Z:P*
M!2*1"UUD9?8J)-.PP0<-S;$!/IS?IF+1&&1;6[.X/851VR.8:+2CILR?,(@$
M>$#0571Z*_>8"DNFH;.$&P>OLEI?UZNQ3LA,1F%-24FU#T:_CNKA\#2$52I2
M\>/]5J!\_TH3/TQI@%EI.QLRL>0V$K3J[!N$#.WR,]7_,9Z(DMZT38QNF52U
M-108;7E&B]09?1O3YH>0,_&P,5NS[) J9@:-Q8V(1OW$,K[*"<)NW'0M \_4
MN#*-Q4FLH!K6IOYV#-A63E:F1B-+7*"6 ,!YPB2FJD#"!<F+ N>O00VL-8VD
M=99YKX0]1^%*^!+<R#)^6!6M-(W*O264[6E-:?:19E[4'KO6]@PF6.VX+>-7
M]X$>$03QL6CC08\N!P719F%K+%HJ>KD!A ZBSEKE@RGQ;QHZ/;>FX+^7Q\D+
M4#N.SI:,;#D:*9Z]9I^X$=\]S,I6O,+8V9XGC9#F2<)'7_CJ+_?5(P_>'KZ:
M?_&2(%^O/L!EZ_0VEMW\D+17U#%("3O/]".RMO?7#QWE')@"!Q'[(T%W"IX#
M@W."61RF,U-:-RQ9TC#;\7$O.F5(:750<J2T&A"=B])J@.Y":8WCX!B79T[Y
M*U!<7?-"H^+J'2K;BHN*&MCS./CH);]12!Z:UT]LTS^]+V#52&O#IK5!24]L
M%*"DGB.W3C]KV7!^61:H7_AV:L$^>AE4\]M75?UNO##INL^B_!Y2O'K;-RUE
M0(@H7$DQ)%SJ_&5HIED6M;O0>PXC63,R#L0^=\VB@!O?[_^^XWA;)$WU-:2@
M]35OR[;IPX$Q5/3W+8,4),-L#I&UA$05%*FV8=7-P?R.4(4N&IIHRN+%L'P=
M%<PETA8G>SG+\C^JH*[\B[]R/A]*P.D/ Z='U8#I"?#YT^WB_35Y6LP7[Y^L
MBD #DUA[SRUKRT<*CGL:O/<2<-^G<]_?;781V/S7=!GZ8=:B+]5?1&K,?@*F
M1:9 0&@.P8GF&,!HAN>>=;%+.5/]-==KU_2%1FP+6Z+N/8;2.VAAZVC;O)Q)
MXF+%"BKRCL1-A<L,Q3K;B>TJF;^'<Q[8FW-K@.,*7^AM[+,-A<KAGVAVOUQX
MKRUBAVP%F_IN&#73HEF#(\_*1,;Y$A")>AWRIE+%(4>%:6*U95'^R&*ZESOZ
MFUT<I(WA$6H/(P6SN5'C3AB@2B19(N@JQDT8$KL>UK)A_+(L1%=>"EH:_H$-
MQ(L703!'0[I@]1>0PM3>L/$  4Y2K+/B0XVXB\S" _C,AC//ODF7):'/M6DS
MP.9O.Q69CB;Q!B&:M$,9=I$+7>MH,1-#X#S+Q/V6)A[XXO.J-/-GR/[OM^VM
MAS>@+?]$&R'C,KV&H[*4A#%A!03BB2R^0M1KCKV?)Y+0H7=,.K,[J#':LN0V
MW'?N$56%-Y"RV=&R+6=Y!P2,GUQKC]"W+3+6F!C R:12D1Z&8*#M]!FP??S$
MN\N7(KEQ[/9D]3Z/36C1UJZM"=,* #-==/1F3!2+H.\F+T:O?+#!;+)N \GD
M17OU[# JKZ#MG/:F3<^-DO:D4J\H,9MA.&A;]Q9VU!W85<61Z1XFA"Q_W*:#
M5=_#ZN*^]JUDPH9TRC6#.@(L=5O:C7I39CU#\]-VP)R_IL$NHE"#))\H>?5M
MI?O'0U_'!M,IDC%^#2['(0O0Y$@NRE+KOPHTQ+6*'#PH;"RGIZ$ZKS!Z\\JD
MTKRRHS$+^3L3?7G,\GYEV<A'%WNEXT)-GVBKN/4\/F:GU-"L\11^X@PUK(IN
M>7G1K9BZ.>[OY>_Q3J.7:9;E2?HRZ! 5IO(*4JZZFK:EOI82PT24EQ*S&8:#
M4Q"TWFV&XELZQ<W%%N,,9*Y[>S&(DT[MM,=PM<[NEY]3J8"5S+26=[18:4=M
M&U]!CXPS3Z$:IQ6[K(W'K699)^,<*K>')(S]<.M%^46UMN@0I7<T*+:3MFUY
MLSM!8#S:NGHUQJM=TB4)W>:D81]^J,%=YS)2DZT6_=W#6MMGJG1)^1H22-_\
MPGO-W?.7-*;+UO!ZQ;>P9ZO=K9N>8 5Y2*[BR$10Y2]#,LV^_@XS;KB\ +S#
M#5J]1'*.^)%"E%! $TAZGOI>]!?JM<5@:6P9OQ:,16!QQ1@+%;FNV.<0(@!!
M4@;;#<38U<*B39R9P1%P:/^I;3 4WM!@^UG>7-P<&$$.MQ8JW&VQ?B:VK1@P
M+6 6++XP+0O145M6EIZ<YC07FQR<^>4%S07$@L+%[L<S6$:.A1&]<#3R=OIS
MFM-O"X4;V9J]>0U4)SRS 9ZEN8WC!&YV__Y<9O>!4(Z;WZ?\G?P,O^%#J&V"
MUQNS-K^!Z'2G-Z"S,[MQ?,!-[C^<R>0^$,A1<_N4N]:=D<]9E;!I_N*%$<0C
MW;#DR8NH4JP:I@FTFU*=E'F?Y7-&*C 7I(0S6[)D!OGAIA*XAAHAIH/MCJ(N
MV;)C*M[L(*]BPX0<%)FID\3(Z$T=4&Q&>$JT,P&75'C)/ ]]DI!)'3/)04]E
M1AF1@H9P4?U#.VG3\1/'O/A"HQ?ZD<79NN.@64.C5DS)8^+3-"F/49HW+<?S
M!6=B_G &)F:KP*)-S6YNNPCXS6-%>R_E=#T[)M3WN$T[<;Y1&1_G,DJIDZ?'
MX;W=C)I$_OPV2\U(B1LG56RZJ>O+)6]%"XN\I;-GH"V2AQ7$"56Y&FS*H%,O
ME#.]6C@=BT%YPEY?%61"^7?#K2N5UO2;55U43<^\_Z!P>LHEU7NAB;>B9)?2
MY0[R"B\I2<KPA3?@S'%3T6#L<*D9%>IC,!G9_RQ&ZHX/U&!!/WU5NU17)(PG
M.I82"Z2F*:<-W%82RC863D8"H8P'UQ^QO*WB[Q>)%Z>1F#H?^&RZ:Z\YIJ5-
M_9JXG_8$]K?](#5O;TUP!6%7282DW:TF89(")ZD!)8"4O &L4],.0P1>;2T;
M.EZN;O?DF_>T)^-6[_-C;_4<MVOO1D^^(W!\FZ>5KTTW>;J993OAM93WH@Q+
ME:JE191ZG\<FL6YKU]9RT0H LQ1H[ U"S8NZ)FY2;/=*!QO,)/L9X!,J2K'5
MMC'W2T 'Y3>@K,H#W]6%NTT*>3K2K.N^V[C&\/G@$42MS3,4.M0D-,V',7?J
M#HXNV9)L1-IO<7*9EN?HKM+DCY%9IG< G"5EZK .!^9G&MS2Z%1-RA2G<Z8_
MM6-[S+ U)G-"CH6["GCJMJ#:2^.KWSFT"KM1C*Q\I\<^1-:]<UW23M%(',(N
MVP56RB6[BGSK/:Y6>PE;<*6S<7NI7:9CS"BRF^%X:#T2=YM0/Q1F%/\<2=LJ
M#NKF58O8#7D5'7G;3\)\Q&V%0=0 \&K$'076#F \&\--56'<)M&SD+"W?_SQ
MK9 O^.:OM_'?J ^M?F11$,:KAX1E;,,_-Y9;&?+*0'E2:=I\ N:</,GIDS<E
M@F\5RTG9Z%7 _!ULFAKF;^>=>BY;J<CBDJTIZ>[L-F'!SL^^LSI[!HD7PW#7
MB9NU.\=@XS.CW*F6L@@V$L6[3=&HT26@\\7=9<A=\^"?>$NGD-6PN8B2^K9Q
M\/M:*\8YW$PJ \+,'8.]11Q!E/7&H,2$***> YI0L3S%'2B2L2/-,7&E]QK2
MDL&1X4T84_X.;;?%5)['&&)=[9J>-S]>DX(P>5.0'F%^Z>V+%MNKI8ONC"XE
M.6*#&3IR-EQ]NOKH^6L17G@3)FGF[[+VN=#_-&8FM+=J/$OSIRM2D@8QD<1'
MS 2=?=$R#UJ[Z&XF*$@1&\A.ZP65\JR#-'VD/N5+UW/49I1U/HLNH=30IOFM
M.Q"5:2))4I)U50"R@ZEL$*<LR\[E+N6J/$VOV.8YC,7<OF)"S?,YRS^E82#"
MF5@\3Q*HPRG.;F5)SELX\-W%V?VRY94R6W;;!0/+U)'R;0FE\0QVW)0E+V#+
MPC&M7\*!CQ4>S)YDL@Q"[&B*OI!:9RY(A8T<@"/U#O''1)>@4JWL%#"Z[=4+
M4O;,B=*R/?>88WFQ[3UAFPV+Q0TWL7]L<Y*T/(;UA1PU9]QD%?1("@0OR']_
M^]W;M^_(ULOUS 7Q=MF:)>$_:$#>_>'MQ=NWXO\DA9MSZ?]+PC3=P8VJ."!L
MEZ49_R!2P/[IXD]_?'?!]P;BIQ_^>/&G/_'___3'_$7BB;SD_W,7\YW5VPN1
M,E8\><T753#'R(_OQ+?\-_[X%MS%+S1R,\]:1YBI#IOM6RR%R^-R_Y%ZX/&
MZ7>3T+_O($A^_AJVWE51?Q-[(Z6?@FF1K]$E)6'R*Y!V$\HTA.ML!"MM'Z4$
M?]OEH8(+QJUESH@PHI]H)HUHN)RQ8."M>TC8"]?^P>7^<PK!5V4 _ARFO4Q4
MU'UOPB0I[,&. 4BF9T8-,Y023PK44,&,VT1RO\;$7\)=O,VAD^=]K;">5^+^
MV<T)C4EA8#9'V-6ZT:1.KAG<&NY;-_K?'+MNM%-PM&Y(XHY7#@6^-ZT<JLR<
M@"""OV67)'S6-/J3,:]J%,5C$E9< 7^6)GI)6M'-;%$66SG?(XS=['2W$10)
M0])YN2?JWQ.VO3%^>WC<LMV=8K&/J[:';\(X_];-M6,5IC?OV+HYZ5K:;L46
M6U72#I_6)66R52<2EGL8)B==1XSNDJPF[KF3J@<ON4^>,K@))]3N TT$S'X)
MZWMSO+2U4; K>:7[2TA=P*+(2U+"C78I@<X%L'<<FH51C;GC!#--LII0\K^.
M!9)_]=='< ,W6G$MOPX4K*-6C-^=@Q/U- M]+R+U/8*3G4$;!UD/6RP,^T?O
M-=SL-JT#W_@[8N@/VC&^*93$W)C>[5QCO:RP,>!AW#W@3;]C!KS>CO$!E\0<
M#G@CUU@O*RP,^(., >*K#$U>0I\VG#3T/888_J;F3$M!3E.<6>5D79P@]'*3
MJ;+(GG1 -H$<1MKH5%1Z%B\GIVTZ$197QD$_9]D@=MFR%UMTR<EO6%O1AM9H
MM13=:(Y3WK%.AEC>LSXD>5'FWAB,CB>1>]*&%LUKB:)RME(PAG(LQMO#F OJ
M^6O%V LG^]RNL60#!LBIL"IX[OI?T"*Z-OUW)Q(\+1>> L=;!<R4(T]I_1,^
M&U@H/E"V2KSM&A:0EO6P]UG$^MC:IFF!JM-SM4CV,Y0-XM+("S;O=PG;TB>Z
M DKM-VLZ'L-<J6EHSO382Y(DIXF_0:,%.N[J3)7\-,U[L60)D8#L7Y/I$@FF
MRBP;VDY2K\^BUFUB[[,8;=?6IEUMYVI_V,]2-HA/%B1&2FVKF['I9X1<U)NQ
MI/R<^1@;6<;Z^# !D[LW-$/M)8VFM[T C3;S>T(Q&HK<[S'#QT9JM)A6GR'_
M8R#,N+37P.I]&&-FM39JO*Z(($PDY?$VE\9^Z+2\#GKIX*)RO\RP80RT?DWY
MA0-AR?X3;0O$;WH$?2FY:LK\7>2<%N;RY#B@B%Q()<$+$8K/EL2+(O;%X]+G
MZ/9TPZ S%0:-U-C_T]MZ<:^J;G\*HZ-/6S,MG(+B>*6L [A.;2SP.-#"'>+
M%%GEU- =&+\W[&4MAJ^K*+X3 WB2@7P#!Z35%K81SC=85!\I5_4[>L-[#+>[
MX4K3?X39^FK'1V1#D]O8CW9P*@5)\OC_@H7WVB*W(UI""C&"HFF)SB$YD=,Q
M \ T<M65D0N32JQSCS2ER0MMNS/=_\)8 _BD85MY$-L1C+*3Q_1G5"F7PDH6
M]@=[3GE+J4^=F\WM@M-D1/=PS]55O=MXN\O2.S[;HQ_5;NBUOS'V8MYIRS;O
MXTGJ%T30)S].Y%9>![>;+N/UL7 *-T+++W\)^08C\=?#+RGWMJ'SCF@;+7O"
M24K*(N+GT_S/T[N_W#\D?9='U?CLRJ[XD+37"FY^:*S](!HS+60R07>HYD@S
MO:(>LJ]I%6W@R016SG>#5\YWQE;.=ZY7SG?36SF/N=VS<C:R< )B]L-@,?O!
MF)C]X%K,?IB>F!USNT?,&EGH+N?8Z?(K4*JE'5-X>7SFL0XB;FVQ2>0@4QF"
MYC1DRGRU+)R?:*8GSQB^(:30#B=H6H#O&_)\.9'8$6/!]#'8LB270<9W84QO
M^<<VE=K^(%(23QNT<5LJOQ\%-(D@ZJC8;#LWF3J+;.=?+-R=-RRY9KOG;+F+
MYKZLZ%PE+^\I=85I YLQ<0@MXZD0#WS%00Z'ZSR)QTUB0]1@,"T<MBV[)ZA
M47>+JL(K6,GL:-JX(.:T:R423L-^FH44'OGO[RY^^NE/PL+D'__T+^_.*O6R
MTI@RS$#9E^?=9A?!F15']#E.J!=! "OXHV0.T0]>&$/*T,ZM.;89O-P/(F=\
M+MQ?W5Z0&BH"],D;0/#M!9?@YXQ4Q8#YDR]>&(D*'7Q^S%(/ILZ#EZB'49D3
M:]PP,EUCXT[\%XD7IY&L#5 FT%45>H67QXMZ!Q$+RKX4;;Y&TW 5$ZF^_#VI
MP)!YEB7A\TY6[L[8U(1:99B:15F9]V[BFOK\ VV/C8M(LK:W+S<PPD3(]\ L
M=I3'NY69I]%%T]B<-U6D[[99%=Y BDY'R\:E:,V2;);19$,V)0J2EC"<"),*
MIQF"?=9K*@0A3$DO>O!"OM9?>=LP\Z):EL>V153Y172]@SX"YJL7% C(ED.8
M<<O0ER <E2%0YCC#L]&=(7>?K6G"<6T3NJ9QRC>)LNZ!JBVG]OYX<ZZ;CHTM
MR]3--<61:+;8AK#7NK.<3Y<UBP*:I% 1.MOWF&_]+Z"=YVT-FU^,N:SEE'\G
MZGL[JE:GP%LVG&&6)4H(^R<6E\5NI*R_?]URT6^[@:/V$E*RNALW?A@(U(O*
M0&\BZ8:):>9$PA3YS'#,LZV[Y.VS1[KEQC1'5E6O7]#7[#)JM_0&O(G59OT4
MC*NU_")AB8%4(,BO (,('(Z."P<, 1O!5]O&7YK2K-@&]55DZWH6:]0UM6F\
M-( D1SQ!W(VIULE+-HA!KL+"*EE.^Q28TCMC@\":VK88^U4C[UY=J3&\*>2K
MGXNVZYQXZ1K^#S;CBQ?)4E)\'H0^WZK #_,X./RB]F1Y%Y%W:\M2+_J0L-V6
MOP'=%+6*=WR_4WI%6\37!01LY16+4&W=6;39)\PMR&GSG+\:,D@\DV1WPY9)
MJ <*802B,"BM(%^09[H*XQAL-+8DDL#7RKCW\< KJ1ULHY#'68UAAM8%)YJ,
M36'$+:]:[Y=+ZF?WR_>O_AI2KS]Z&;V/)["630<8<H5SWP'CJ2)%#T5F][R/
MA%.F1'Y."8NE;FE2,DZTBOLA:=(U[E&=K]W\()8HWMV$>BF]IO+?LOMUEDHV
MF["<T2!<V,Z#P9Z%]3RX5];-0 M\1^3S^T0S$N182#@U?>UH5NJR T<.N64]
M?!=ZSV$DPDU:E&3#$T@-5FO)EGJID<3,_5&($1-3YC2(5$$;FH!-(\X4F#*-
M2Y8W8>S%_L%-NA;)'MZ WDN5#81LS0MU1)AI8[*_R.5.K&P[#@/6NV4!9*)7
M2KLDL/\J:2^;;<<P'!YVW[5GH^EX$ANM<-JB^=3.(C@!!IJP49Y;+>!1Z9Z'
M]\!4B$6'1+ !G)K&TM1PR7O8TM31@/'[_HZ7I@9$&I<F+?T=LS1M<T#D>4_*
MZ*")+D]=4HC*=. ZV35$;^<Q6'QG)X*T#B(;6B;I@#?Q::[[*%C(<0T0")48
M4EGN4X3A^>XC588, 1O!UVFL'_*JY8CUHZ,!O>M' R''ZT<#(HWKAY;^ZMC:
MA 60B:X=71+8OW;TLMGR/!5)'3G(9=BV1C0\@9QIM99L3:4:2<Q<&848,1D$
M/;"D>O$:DOFFP68*_!A9E49N>B#A?76X=[FOZB3.$^HMX"I06R#DR%8P56V&
M4[.Y;Z\P@3U>H2( B_PJ@!'E*$I'W<?5SN%4=Y&7D* *;V?+XL;%D4L F+.J
MF.-QT [JZXP07*9I.&P?GK,TNU]^8"Q(N>WZ1).7T*?I$XO:BE#VOX ]E&YM
MV'B8/*<,DIDXK%BBP%8VG%?CA$FI@.T5EV\6A8&0=)$XKK7B<=^C P6GJTGS
M(E.C*[/[N2M[W,M7-H19EA70=5X72NK-A?=:.Q-LK]6H^!92%?6T;EJX[EB\
MDCDH@J(H6.:].C_+5>4Y0S+2B;)JR.S<_Z 6164C8W.CFK*?J%F!HZTJRGD"
MY@=OOY%A.S++$^-B#%7 X(9W&*]NF"Q==^FE-(!< C1.#\SD8S_LR.:P[E\D
M65O^ 2P^C#/! B_&E/IZX-^O/?"/<YLTKX/^!>#1*!#),F$Q8,]1N')XFCI:
MC)GN\7"D%CBZ1[K-A^Q^V9_-2/W%D5.]G8#M2=V.9,STU=*_,1.UHBZFJB\
MR/JM3N>D@F0US#Y5=EHPTYY\&GM)R#['D,,W7(8T:-U4]CZ+,-9:VS2>&B(G
M[&XOV<].-HA'%J4%DH[Z7MJ<D+7_P1%R<MB@\:OX.34W.;@4&,G4N3/RN$)&
MO9=YN[C= +'P5_*"$C<=*A?L<1#]]2[AOR_65,;8-YUB:&\<<[BA#81IJ=2+
M=O IB$,^931)Z3#+H41+\J,BCI< 8%(AKI\<%9C)FP+UMT3B)MF:DO/C&?)
M:0UWC I6!"4K@HH5\LHYA"_P3SY06(E3IR+ *#]]@BU4'H9$WCS3F"[#[%L1
MCU2ZW#J?Y(UG?*T35!GQJT&K3K0<'%_IUUC,K*A8SX0-@T:#]UX"0]==KZ#[
M8716[*9&3>OF@BHIR+I-W]G#63:,738LS"*W>&'2M'B-.Y_#V)=-[=G;@[AQ
M%'<SD2ESQGKL+_,I#5(X^;]-TQV4MKE?"L=5^CD.:,(5(\?+52B<V#;ZLQ[X
M.%0W[\76^W[;E>+""DUTO+%!;.8CE25X&:5"7[DI$18.68#!EWF'KE<KH\Z<
M#.4T4M)WIP%7>4=O(GI+Z;ZK'/0/>0[ZG+[C;-]*#._/0S^!K-XUIVJGC+4^
MAXZM.FK/_,&S\(4+BFZEIYV53)D_UG._Y\:-S!X.>I3%X*+O*$.M] XZ WQ'
MV\9S1 F:I"+JLM*T&I>;RJKVL\YVWK9#0(WG*TK/8K.;-;5I6YC<G+.HL94-
MXI5EZ:DN1X-1V.0'NJ1+EE3N(IJ^?\T2CR7<_O.2O0CM^<19Q-_D[(K$?>N,
M\J%KB_BS0!$IR0:1V3JH-]@%S G_I#B*SWKP+$#6',F. C=M3!WF8/1L1RJ7
MUUCNEX_4C[PT#9>A+PL^;J!V;U]V>$0+V AF=4JF=<SUP>V?8S!$HG&?2!XS
M-DP#P^T+L;=:)53&#@)6<>>E\TX?ZEV\X/;3L""R-1!2; 6,P??US GK@)%@
MH]B+$M"4^M^MV,OW 0VE;/(/0B2%,/(__GJ=GP#_?SLOX<H]VLO2,4>BI_#D
M0$'K:-&X6.5D24DWKP%D58946,H&\,F0?+SG9D.V!QLAX32%N(K-]!7HTH1O
MAH+CFF4#WT+(C4+KQG>P @(YP'!!! K"$I(C(0#%NE0-83Y#<M3R<@FUZ7VV
MBJ$Z/;=4+V7\1YL3KN=IY)+8TJJMO6$+><R^3EM/$"%7==HBW*J@?D'>QW H
M12Z]"$ZVG"SH?9+#!C+1]CF:[\.$Y5Q\8%'HA[W%YOM?P)Z@M39L_/BLI$P*
MTN37@KBS.KE]7&;#66?[-"3DL@Y;J3@[1=A;4'+0R]CS$24BQN-V*A2D419=
M;UH&C@4;QV##VY9%XL6I.&7NW;>T/3IBXW+<I+6=2T78]=:EE:ML"*L,;UZX
MG2)RI]%K+_.:,T"J/CYBN]+4K+5]2DF< '62DW>V-^ED,1O*-T/B\T3]7<(A
M% 4>/GF;ILUNUV,(<6EJSOBBE=,D!5$"5*U+1R<GF2I[#$O#NQ^>%V$6=4G"
M\2,CI*!HRK0$""+@8GWWPYOG;TE!WID(G+"0J?#%_GXKV=&@EDVE2#S;7X1E
MT+OX75@_#0L;,@!1SYM391QVM1\;P'HVBI^N8M8N=VD8TS3-"\(KQ:QUO3,V
M9JVI;?.KFJ0UB5"U3N8VA:KU<\RV;$D@G2%JC<]@9:?>ECU9<1F*ULP^IL03
MR]+P'S1<K3,:S%^X><[-L!W$Z]XOK\-HQ[^5MQ+N=UF:><*MVR(OR%:0$C60
MFOGS;4&7O GC/,'0MQAWOO%>(4*OBJ[-R)<<W<R3\(I42JQ"]+,Z!PS-.ZP8
M,DVC8'GNWGAA\F<OVM'+O:B0< 5Q,AT60N_SR/G8VJYQFQ2H$4'.I7'0SU<V
MF%FN1$F6VOA(/0B^"N[C1]BHP9WS2R\-T\\Q>TYI\@(!+K?Q=I?QGSE_N,DL
M#IOK7>JT+TR3&RO(FF%9G0<N#1_CX]HTD8P.EJN-GX@AZ]OI'3PT=FLG&C-N
MGQ?4\M@_Q[NY0P8V;=\:N.)*).Z7>0%)+WI@\A"F)RY@R*MCQ:>#A#VA8DM2
MHB %#-=Q X-&H4D&E5EK^]);GD?D@<J4HKF1W"*,/4]C+[XUMVISSQ>P*/*2
M%+(8R=T/:ONGK2.(:*XQO3%UFZ]'6MA SDW#K7*R?P03Q1_F5.EN0Z]+I9F6
MZ<DEB!ARI^CJ$6*6R6Z=MRNE1_CZ'2DJ_+>]C"EG8VM;V08W@%WLE G9"F=6
M1X1:$PWV5VN>R<,]Y06DD(0</A=D 3Y7-POH<*%DXSEO>>H6AVMS_^^[,+>,
MV_V?/4\C)V5+J\87R9PLJ=%UZ03M8RX;R#''>YDNPZSS64W[&,N&EID]C&W;
M:L+[EU8[28%G$U"J\#&AM-.IK_R>1D5[T+X+E7M!"@QN/>_JS.]1Q!T<=>?X
MA)+3-Q'[TG<12N65\8[.DZ:M.CB!.A'D)^38;.=VLT.SAX6.--X5VSR'L;!K
MI:F[XF"AB%H8Y.;N/$D@6ED66()/]TN^EP43.15G4;_P36^/>M1+9*0NU0/&
MUFY3+VJ,A>.:;QC3J%BU:I@O2(6:', F==P71" 'K5-@OR "_07IYZ#AE4[S
M/&I8%DT,\M@2+4\/#XVY3EM^115)*5LQ?JV)4U+,9ZH9)ZYBAL2[$30=U*,X
M'5W6PPIW%IO(_@HE![G"D@D7U4VW_G?'VW#M-*P:<W48OR-Y0LWIF'4*(]%L
MWZFRUTFBS1)GCTCV/#TJP>5)JZ;%+G=9UP)PW$I9'W-/4B#V<,RR)(GK0I!#
M-J%KRBV"PE,.B1H_43X#%M[K TN$D9!E2?B\RT16,/;@-5Q;UMPJ4C)'4K>U
M"Q@)$V/V6^<,(E:?XRCJ<LWRNEWB;AY44JUP%_E3WT0<NAO7J"XA9X;&QWH9
M+9$T$+*[OG_E^[O8BZYV:<;1)^GE_@-EJ\3;KD-_#@7 E#)+:F@179 +3=FT
M]BAR3HH:- 4X4J(CSWM2X2,"X%3R4^H83V9@D";KI2NN\>Y'N^).6C+N;RLI
MFB\J4GJ _#H LVZQ$=TS[ONZ("4ZEY$;8Z03Y<5J&1/+T_N.Q:L[OG('\CX'
M;NG#-8*<U,.(F9[/@&86 1PB\4QY24..$]/#_)%.V">VS+YPP_$A\K(E2S;M
M#MGN)S'.V>86C?NL<JJD((OWVNKJ ,Z#>QL#37G2<5AU."VZN,V!.:@XW",N
M;  +W<>,2+=?46LBA5*'-+A/1,E#/C4/ X+EK^J!)2,:UQ=]@@!A^Z1T'-HQ
MIJ!M/HVQ#@_B>7(G? &72$"0#KP ?$$D9.' E['[KL/U-4^1[ABAT>,Y<OUM
ML&P?RR3.MP%?%,)E"$BD:9"'- 5EP=0/C 5?PBB:QP<YH#C036%.".N_:46W
M31MC(]C":%J96>W,8$-FNEQ&.(\%)>+)?8.70_V*6(*S%O-J2ES-'W$&O.@2
M,EGEF(F7D6Q-Y2-Y.'[@97:S;[I14<SI\%L_0G[ABYZ(^+G*ZU+1X'(/KA4X
ME-QYT4<O$[DMK_GH*SDM=#2)/HS&DS9_8EUB(Q4X\&K4X)$"'R1$GDQ%*2TC
MRDP,DWN?_4/"7KB"A(+BM=WX;<PGNQ=5">G% =XVHAF=!W_;R<YSDY,+2,A[
MUW?%RQ@]??Y_/;@<AM[JZ8"FXP97W-1V*%'K *GUX(+D?:A7H:AZ<4&J?L"C
MBFRU=W*A>?9UGV^8$ +W"K/OU :*NS860]#:IKV#SXJVE2,3/H,W< **. R=
MS@%@PWB-.PIL&X1IYB7LL["QS9C-(VC-D@8\Q;V-_&RPP$1$[9D<%1&PIF)$
MHP=M>)+ :1C+GV@&]^+$*A: ??\YA=UQGOPK7LTA(X/<$W<'+N,;0@K\<(+&
M1;X@3;R2MA,I'C$63!^#)Y%2YS!+RCR[H;#L1!#8O>/BMC]XN$6T-;:L-0G/
M( 1NL_,,@JHO;8]A#AG-Y^-E)(=+2KS'+Y59?R:4[@<W+WKS (T82A?7-&K.
MY-Z]4O\+8RY7-#9L6AL(RB0J]SJU"C[NXO^[67P<VJ_ -_?[=)6SCLXC#K[(
MJ^_@=5+3M[?7@<JA2U,'?$T.33><1-X[&G1P;,]KHG6.=/M3] ^7];O;QS=V
M6W11^X/H6]G'#=K2 *>4,9-7!WYTR(8(.BLOD%.GG9"W#KD5F&0#3T0\_J>/
MVFOHP_V>STK]J(W=T6^=A$R=.>=A,S6JR_[*G(:IV;69^E!-W&;J@V_19M+/
M2;3N/BBE*H&<D^6D/%/&6T[#!FV"J2":;IWW./%U-6LP&407>3M>C</<!I#3
M8+(I#93&:F!. _4!L#PG'KR]B%9;L'P*%Q.?2NQPF%%,[A;YQS2!E/4AI&RM
MM$,P899/LWU&>.,+0' 9+R=,*DP7!/P,1?K3 IC2-6TG_4?F;X'.C;Z-;ZAK
M/\FNQ73E973@7DF,VBZE 5FRI!XCSP<VE@,K^N[4@X32.$P'W\]X(U;YX^UN
MR3KI3F!SUHCO'+=IC1UQO6'3Q%W$,C6UTS1[<\K0-DYA*,]8/5ZYT(WM1">@
M&$_!G:-6/.V%:Y6H@Z\(?9B3_:KT8,?\,:0$^P;/52)G<=LL3^?;45FK]_FQ
M"9N/VS6>'$W44B\2-+NLJ]7/VJ8,S-W\.N/U])HN*9\JP<)[M;NF=A.>P+K:
M#/ <U];FGKA>7W7Q%['&5O>4@AP$R;S7KVK)[9E>AI9=E3&UK"SK3B)(T5K+
MN].BY13>0*JGCI9MZ94."!B%H*='AY[0!<)H=N[K5!$:AN";;4/57]-@%]'[
M96,=13[I\VKP2HDX1K:&-7)Q5(WG?,QA@15< (,K#C+EV061)3>]." YO*G<
M&QP[BDSST$SGZ/5#PM(V6UGU-?U'K*+Y"1RK"AR:S]N0?3-P?*K0._O':H>2
MI7:4UL!29XM.2WC&P,5F4"NC%QDE:N:3S]?C=O*;=&\ Q[?36T:&C4_C\H%@
MNF6AGK]X801P;ECRY$7TFCYG3W!)7NZ7?'^WV45@[HKY]SE.J!?!C@NZ<4F7
M+('[?BVBKK5MY 30@L'6*J4%+&8IL\VET3NI"@(!#(X\(7H%G!D=CS-V_M:_
MZ0Z>M41U F[?!G3&TR:=QJW_?/8.R*Y1-A_ /HF@7:RR^>"%L2D3H+%MRR;
M 8:IFP '8&V: ".YA-CRUM9^('Y>2W^S8&M8^CO&P?8^.7>4T0"V/WSO(]2E
M+ LPWV5KE@#>SW% $W%0?;\521SY&*?O7VGBARE]2$*?BLKJ156!_!=@C'R^
M-2;!+G7LOMP.2FLWJNUT!W53>*J<1E^;?J")2'+*=11)19R*<AF2LV31X!O:
M(QADRJED62DQQX-K^RKF5ER;B5=/="7\QXVEV12?QEZ<;&[5^'W(@BPIZ"K6
M:#-U);*'N6P@QZ:U%]I ,>E_P%1*,Y%!%+?M:6W&S [GA-Q$-C,GN SL6S3T
M';%%*<D2H#O%#4J["*KO17IX>\8>1W';I[JA(M^PX'/LI#L!KV,COG.,-6WL
MB.M04TW<U7"[S5/@QQDX=[NGDR'WKL(H'FO&.J/O^"?^9?$5_\\S-][Y-_\7
M4$L#!!0    ( $2( U/:N!E2$D(   =.!@ 5    <')L8BTR,#(Q,#8S,%]P
M<F4N>&UL[7U9<]PXMN;[1,Q_\/@^L[S5YHZN>T/6XM*,;6DDN?KVO%0P260F
MVDPB&R1EJ7[] &2F,B41Y %)$"#R1%24)1$$S_FPG1U__Z^[5?+BEO",LO2W
MEV]^>/WR!4DC%M-T\=O+K]?!T?7Q^?G+%UD>IG&8L)3\]C)E+__K/__G__C[
M_PJ"CR0E/,Q)_&)V_^)F6:0QX2=L15[\]X>K3R^"%Z]__-M//UY^?O'UYOC%
MV]=OWP2O?PU>OPN"__Q[0M-O?Y/_FX49>2&(2+/RU]]>+O-\_;=7K[Y___[#
MW8PG/S"^>/7V]>MWK[:M7VZ:RZ=Q_O#"?N.?7E4/'YH^Z_K[N[+MF_?OW[\J
MGSXTS6A=0]'IFU?__?G3=;0DJS"@J40DDK1D]&]9^<=/+ KS$L96%EXH6\C?
M@FVS0/XI>/,V>/?FA[LL?BE0?_&B@HZSA%R1^0OY[]>K\T??7'.6LR2<93]$
M;/5*XO[ZYW>O7\FFKP39.5F1- ]2EA/9=T86Y>^<K!G/Q;@+GLI/+#F9__9R
MS9-9L.U#4O$?&EWD]VLQ83*Z6B?DY:L]\M><9.*-$J]/X@^;]I)$$ZQ4=)"[
MG(@9NL%Q2TK"HD<,RZ]GV_F4D>B'!;M]%1-:?EW^4*)1(B%^^?,TS6E^+R9]
M2-/MYP3!)/GMI>IQ14TBIPOC&U@&HN83681)]<VC.YK5$*1HH4/3\RDA__+G
M%S$*V0T[HZE8&31,KK?CDQW-LIR'4?Z$',VW.L,V#[-9N<**+%B$X;K"CB1Y
MMOU+4&U.;S8+[3\V?_[SA&91PK*"DQLQ>3Z(KWQ3\*+QQM3Y"-Y:Y.2Z6N)7
MVQ5>0Z>"(XTW;?"UG?9B-R3GXL>G:[>]H4VJ;\)90MHH?M2HB=K]T^&(1R\8
M%W+%;R^%;"*>S GG)/Y4?4-YCI8G1$F(^& I"_Q-CC:)?WN9\^*!BI!'S\Z<
MQQUM6KQ:AUP>+=&2)O'V[3EG*_UMC,&@$1\V!$LNQ#WR:11L +.6==ITS*$S
MSJ1I.HI9F^@P=>9;IC\#2"I@"-Y,%0+HAN_+9(!(3JS'<;[#Z>^O:G40 ]K5
MZR",HF)5)%)'#EB^)#P0;XDO+TF:T5LB%$GQ.PD$Y0_#"M6[.G4^JD;6@T+4
MU5!7ZZKC7,RO2)2$64;GM#+)'*U8(;;8%@VA0P]3U^5\X<.N3HJZVU2%#]3=
M4'=#W0UU-]3=QM3=.@M:%G2X7X6.<BM^8_Q>4T&K>7-,[4OY>52M4+5"E6/:
M*L?Y=FG#_5^05U!Y0N4)E2=4GE!Y0N4)E2<WE2?X.6Y!6_HE6(7\&\GEF 9"
M3B\XS2G1=6VU]#*F%@4B!34JU*A0HYJ^1I7EY8$$4*04+5%_0OT)]2?4GU!_
M0OT)]2=W]:?&X]N"VO0N2$F^#89;5U%R*Y8&V5)PKZD\@?H:4X72( @5*52D
M4)&:MB)U&O*4IHOLDO!KN<+;U*G6]JA4H5*%2A4J5:A4H5*%2I6;2A7P$+>@
M6KT-.(GD;V$4R<A"064@7D_%SU%U)&CJ5_ .QU2R=*E"30LU+=2TIJUI7=-%
M6L9-I_G1PZJ_9 F-J)A&;>4PM%Y&'0QU,-3!4 =#'0QU,-3!W-3!NISH-HIB
M!+,PHUG YL'^QS2UL)9>1BUS 2$%]2W4MU#?FK:^=<$784K_*E?W,4LSL;7&
MU9&2QI=[*_]B7C.CX(E:ICZ#.ASJ<*C#H0Z'.ASJ<*C#N:G#F3W[Q]7V8A85
MY0]A&@>DG/$!3>>,KS05/F!'(^E\6M084?N.Q.=C2<)9$CZ4N-]3LVJ?&U3\
MCN5>QDEXS.*GTI+JL4EJ"BX7Y9E8#&'R3Q+RTS0^$8-71UE+4X-4GFQF4?7M
M2\(IB\_$W^K4YM:VH]$I,8)1^:SE"#2>[U:A2M^ -A^7VCH] ])T!"JKV:9>
M0HWM1J#O_Q8A%Y)_<E\5 FZ@4-%R!!IO>)AF5(Y>*Y&JIF-0*3[11-G>8X/4
M;"3C.!9G=K;Y1Z[.-TK[9D/;L>B4)]P%OV'?U5989<NQ:+QD0H1)_A]=*T[I
M]L9C45H*M!?\DK-;6EVQU$BKHKEQ:H_%HN!A<B[$N[O_0^Z59"K:F:>OS+*Y
MSH464(;D91=%7E[CM7<OTG-B 2^9I[P2RQY*N\L1KA4Y(,V-4^N*^Z7ZW.F*
M\(4 X2-GW_.E&,YUF*KG9F-KX[2>T81\*58SPI4$/F\R"E7\6.PIB[W*B;6$
M/6MEG+;S-&)<3/-2%"PWOF/IY^7WC9LZZ*T1:!?25QCE])8(&3'<K-H&HIN:
M&Z?VBBRH--.D^9=PI8:VOIEQZJZ7)$G:%G==(_.4K<(D^5!D0@S+U%MV;2OC
MM-V$=^>QM-AL:\VV;#XM[:?N2M>EB4GCPY*EZCU;U<0@5==52:;[-V]G-S2O
MU:)534:@ZO0N6H;I@BCVD*9F!JD32J:4YZ[O5S.6U)!5^]P?SV;3\O'>204R
M*QV"JTH'"+C%T-/I\9Q;!E9Q/9TH+9 T"89@1-[Z@4B#/PH,Q3L_H(!YG,"H
M_.@'*D '%QB6GWR$1>%1 X/RLU^@//='@)'XQ2\D&AU;8%!^]0N4!G\D&)+W
M?D'2[%N$BVE>B:XJ S,<#J_$5@U3,1PA3\18#:,@'!M/Y%J@*QZ.BR>2+<CY
M#T?%$\$6[K^'0^.)> L-PX #XXFTJXXBA4/AB8S;[&:!P^&)?-OLWX$;VSR1
M:QN\-W L/!%JVQUL<$B\DF(A,5-P:+P28B&!)W!HO))C&X*>X(AX)<,V!++
M$?%*= 6$%,*1\41V/6V)QX(#XHD$>ZH9;#QNXF)9U>7'8+99UO*^@AE-RV_I
M%@MMZ67,,C4@4K!,S3"Q=8HR-4?1OPLJENZ[^/=BEGTF-7%TK>T.HEI.QO.]
M>AWBMZ>U.L2?_OP<WM%5L:J%4?E\)-JNI+I1,[]JGXU)DQ*MFJ<CT74=D33D
ME)TQ3J(PRY4D-C<<F=JO:;8F$9U3$M=N;:"V8]&\7:I;@A0SL[&=A4H\6\FZ
MW \KW^5F:R2UF&N_YPA/ST<#V-HB_<<[(0)>VTKOY:E7*_.%#[M5KK&&V%2C
MB;&&&-80P_0,'>;KU0/6(J%/G6NHL,,Z2WA31ZA=.&=:&L?4\8 7F@,)T'"?
MN=MP !80T+[D"R+J"0+4=Z<.A/;.T61<@3LJW 0#-BL4]CD?9H)2MFBPE8+Y
M=C0,8,RZK(ZZ^[$N:\^ZK%WL5A:<EC\%"\;B[S1)RNJD+%\2'E#QR71!Q8 '
M8981[0L/]3H=TZ79A;(>'LZH2H6HC$";7W:^Q<T?_OQZ_<3:\_S!P=2D0E^K
M+[[6TX*SM=IY6/=X+-\664A@/A*VX.%Z2:,P4?OCVMJ.[8_;IZ3-)Z=JZX@/
M"_UR=L<$/5>N>:X^;H23HS0^?Q!*CDJ9!.XQ[=8)^NG03X=^.O33H9]N!*NJ
M4C!C6E+GU#%!+QYZK=!K-:;7JEDCG#H86GNLV@ Q=9\5& :5G7'J (SIOYFL
M"PO]-XW^FSY:M 4_SL_!/*0\N V3@@0K$DKJ2E5,TW73VL^8WAH@,9B"AFZ1
MR;A%, 4-4] P!0U3T)[;C-'598Y^='6YYNHZ$Y+='U*PVQ&8M7FV0.^@(PL=
M6>C(0D<6.K(PX0Q=50ZGC6#"&;KNT'6'J45F4HLFZYK"+,/ZXV*0+,/)>NLP
MX0P=ELT.2PWCB 7_Y/L@DU4[9Z& 3%:37),T*S^GZ9]L[6=,_R20&/1/&O5/
MGEY?7JJ]DL^?#O#)3RQ=Y(2OSE-Q.,FZWY=)F+Y]_>:MF@[@*^@HG8*C]#--
MFVFK>XY.W#&=N-KF\*/O(8]OQ'<;'%NU;:RZ@2[FQWOGSA5)Q*J-CUF69V6!
M[ _R:+H,[\N%W.9>&:C7J;O%?.'#JGOO5,A?[)Z0LE;[Q5I.H]KU#VYO@8=+
MPLO"].+$KJK--W+0TMH&_4+"D/?7-&QH=4TL4MH8'U'?R *U5T0L,!J)+;&<
MK8VSHK&M#:?OP_Z]O\,?<2[/X'(__W#_;(\OC[W=V9?&H/$R^2ET\J.3'YW\
MZ.1')S\Z^8=?"_5J'AOS:/,%REH!D\&$.E\P:'=IJ,7PJ;OYVN:!OFW4%T3:
M9T6#M<D7$)0[;:/MWI<@@-9S!F@5\04/C(1YRG.#(V'J@W[HQ85;%S_ =.1+
MT$<K%B#CJB\S Z. , JH:Q30H#X\"W%";]X$-!6M2)"'=T2W>H'B[3%C@AI)
MP$@@HY% [D>^H&=[\I[M\W)UWX1W\(JLD%?0HX4>+?1HH4<+/5K35ZX<M32A
M<M53N8*?XQ8TIW=!2O*M[K$F7"8DK%@:9%+;$\J(&&I==4JGRS%U+'VZ4/$R
MJGCMQJ?'2.WK9(-T:$,XC98D+A)R,3\->4K3179)^-;>0J.C-#ZA29&3N-QZ
MV_2&GKVA2F%7I3!$+6CJ.#,C.E +4^^G)7$,N*NA+J?2Y9JGT=2%5E3?4'U#
M]6T?"<4AQP:6H"PH<S\&LTV=''D4;"^0S;JI<;#.QE3@="A"U>T0JGLK12/8
M5 'ICCJS;E09&2L&NU<Q>'=R7)&(+5+Z%XG/8QF>+ O651=!;->$.$8^T7!&
M$T$XR<2S8J6MX0_Z%=3\4?.W/B-0\P=H_L S"75^U/D/5N?'FKM88Q9KS#IO
M-G,TSP3-9GW,9@;4$@OFM)^"Q>8ZOR!,XX#E2\(#^G"M7Q"6''6SKG7J>TQC
M6P\"T?9F)VRBTY"!;& ])H,E\\L936E./M%;\NPB3DT3BW9/5OG>7D *YT_Y
MAD4^6!/J9T5><'*T8CRG?Y5;WNF=S%@B6@,[Y"?0<(:&,^LS @UG ,-9MX,,
M[6AH1SM8.QK&SJ 1H),1H$6P]&5RZ$#249?PQ9@&AVIXZ=R"_>CG8!Y2'MS*
MZU6"%0EEYD^9:-G-9 3M;DPKD1Y-:!BR8QB"CA+(%J0WY*.J0 ^7&57[Q.>*
MN/@BO2)1P3E-%S)^$WYAM&8W: 9 ,X#U&8%F ( 9 +R'H>:/FC]J_JCYH^;?
MKKOU$YLLZ&>_!*N0?R/EEA]DDL@R&*&;=@;K;$S=3(<BU,SL:&:P,0+I93K#
M/:I$>D)F^?4#/4>W(4TD26>,7X<)S&G;I0LK1=YN29:7@N1Q$F99&??TX?Z8
MI65QF"),/H>Y9.+^1 P=B/,AND2]%/52ZS,"]5* 7@K<PU$K1:T4M5+42E$K
M;==*NXN.OLR6=HR&$S(M:/&_!E20GPK!X+Z;YJ[N8$QMO8T*U-#M:.CJ<0%I
MY6W#:BE,_'Q+U''!^?8@@<>,PUY'O1/U3NLS O5.@-[9L$NAKHFZ)NJ:J&NB
MKJD3Z*LC(%G0F=Z+ T#0,9.W><D*,@\7?G73H*#=C:E/Z=&$VI51[6JW,,HJ
MFK/:^\VS"YF-=;,,T[V+:S,945!M%+)&0/6W1IENO ^:5#NATQ>DA.JM!4LJ
MZ1=66J'$..UN[2RO&_R:4EDW(J>W8F)J*JI].K6*QNZVQ?W[&/?G:4=$^G;L
M""K[B_G1?=>7!8^6HH6\#%Y[[QCQBP[BV&O;-?L1^VC-GBZ9)Q<M'Z7QD[_T
MV;?,?1*-<FB4LSXCT"@',,J!I38TT:&)#DUT:*)#$YV.B6X81<B7.=0-N:$$
M^\,K<&!>Q =C^LX?3/N;>\"H_3A5U,:VCX(1_6FJB(YN-;+@,7KS.@BCJ%@5
MB?CSMG":5$HX68J]B]Z2[46$8A@ZIM#U^L:8OJ4!"$6'DYUPOEY#!W*V## Y
M+-DYC_>)K&XM_R1(U#1=:O6"UDBT1EJ?$6B-!%@C^VUK:*)$$R6:*-%$B29*
M'36R@RAE0S5\&V1D4?[.R5H6Y4P7'17 ]IY&5?.@Y* R9U29JV;^F5A&%VO"
MJZL./]Q_)&S!P_621D><A.TA@=U[,:J/ML\QF-8)G:M]).N,YWM2M?CMJ40M
M_O3GL<"5)30N$2XW\IH)T][0&K6U*P[2U$9I'9J%BP47*T_2)._=NB5I :RI
MH_.N!=X^L711EG^NRHD]7:HPLT2W3BQPN]F3TL5UM8KK[U0'MK9 _V;VR.WU
M5)R&/ V3XR++Q8[+.P[= #VB=0FM2]9G!%J7(-8E@/B"-B2T(1V<#0D@*#,=
M\73J>+0;E*"JQ=1-:["9H24Q3AV2,0VNCD>BH<$5;G =3-/P9?VT!(_UM:3Y
MLL;:9U8?\\/AQ&]VL$19<'/\&,R*3&R562;=WC.:5A,_B$D>TB0+<D%I$2::
M+@_-7L=T?W0B#5TA1ETA1]&_"RK6^;OX]V)6;R-L;3< &1\V$^-X-R\N.;NE
MF?@A3,[3,O:ZE$E3FM,P.8HB5J12_"S/#C%Y<W(4_ZNHBDX>A]GR,J1Q'2-F
MOA2D( N+'318^:CZ*:/QYH0= 9SZ#\.,45:@.MF<>C?AW2<:SFA2UG@UCU3]
M=X>=5%_$%GS#S@2Q:20(>I#63ZK=]^;QYKO/J]Z;(_G9/H=W=%6L:G<LY?.1
M:+L*Q:Q7."F?/1N3)B5:-4]'HNLZ(FG(*3MCG$1AEBM);&XX,K5?TVQ-HK*L
ML=*]V]IV+)JWZW5+D&)F-K:SX.?8;K&EZ)'14DFII!!2B[GV>X[P]'PT@*W=
MH/]4_)3?GZ<Y$1I#GIUG64'B"R[_E?K6ET(NTTT&T^8IG-T.G7<3+P;&9T\L
M>"3[W/ PS:JS_DT+"I NIL)K[3 >I?%V'/M#T?8%!Y&JDXV/.)<G<54Y?RE_
M/$^/5E)RE,&;M:]L!<9[O0DU^-<[2JM6(2[%GHOY19%+ V29B4I^IXOEH$BJ
M/C*1*?DPPKU!>>C)-<Y[:&YBQQ'#2VO"*XU_S^Z"^\A8_)TFR3;M>$?VCE@5
M)*!WK4Z2399U=L,VHN-V%$GVD;-,Q5C;:Z[R](7('3[,EELSGSY_S[JPRBM&
MS4W6S=K%Y&0]D@L#ET8)3WEN/&,M]JNI<PTU!;#.]H^I(]1NNF):]KBIXP$/
MV &9EWP)00$L(*"CTQ=$FB,> =;@J0.AO7,TN1Y\B4%JGA4*[Y4/,T$I6S1X
M$GT)J1HCOM7Q^G8NQ[<ZFR?2QU=A;L]P%JX^YA-SYXNS<)GQ!YK;LYT'TH ?
MS=SV/S$TA_("@0'5KF[J+*"Z5G,P1#][ ]$ 3C8P:K\<(&K#>K[!4/_J,]2&
MO)Q@<-][ VXG?RE<OIZ^/F(O>!V.\O35&'N![W"4IZ_]C)FE8B'K[:=@L=G-
M@C#=EGVE#_M]$):)C3V3X/I]9,R<N"$H[9$B5\X:?E^%*&Q^V26G;?[PY]?K
M[0<WL0C/'QA,CZMS:6.RGL5D/<\RB4X+SM;JU)BZQV-E;E2E-78YWF&BSC9I
M:SMVMLD^)6T9)ZJV%F*PA-;'<_K7)G-\IXA4"?=/F("]Y$2X*V;1N)-%(S9
MFI.RCL/3N2)=S'21'A="@$VC^](RFY3SZJ/ _),Z]+17GW9#B2O2DSK2MR>9
M*K<!\JK5Y;=5W;?4G!1<".F7A%.F"K)M>@6#:C&H%H-J,:AV*.9A4AC3$C&G
MC@F&W&*(*8:8CAEBVJS^31T,K3U6;6V8>H I& :5<7'J (P9;#G9>%,,MFSU
M D/TP@,,KNQB"CC H,IA[40'&$RI9^NUX&'].9B'E >W,L(P6)$P*W@5V-33
MJ:K=[YA^U([$8751=%A.SF&)I0^Q]"&6/L32A\_=&.BT'95^+'V(Y0"QN!3Z
MAM$WC+YA_[Q\6' )O;]8< F]X>@-Q](Z#I?6F:RW%ZMLU1\7@U39FJP#' LN
M80R A5(9_L0!6*X:Y$^DP"A5@T;SBK\/LIQ%WV:A0%9>/[DF:59E]/?SBFOW
M.Z97O"-QZ!4WZA4_O;Z\5/O"GS\=XI-BMK%[0J[E=-B6$;E,PO1B+E:P*B-)
MY]5!;W64UQR+O61UG@J9,*>WY??>OG[S5@T;\!5/HPD4I(JAD6B$LO+83<@7
M)*_.NN-P+;?EB_D'(@;P-.1IN5W_(39O\?LG]IWP3W1%\SHF^O8YZ$3I1LS7
M]7IP!G=]#NF'F7P\R&>:-M-6]QQC5<:,5=%/D4_*SY&X%)@_2.'B>$^V.+V3
M/ZJ\:;"7K?HRC[Z'/+X1WVV(3ZAM8X'6A].9\%L:D7I0O[#T5NQ28KN25 OE
M,0^3_>?'+,O%V?1/DE^1B"U2^I<R4,'8]ZR.N#&N*MGHC/'-GV0[52[[N$2X
M@;>4*2_6DJ#:/0_<WD84!^%E%:YT,U3UX:W UC;H%_+QEW#5M,G5-;%(:6/H
M6WTC"]1>B>7):21/.#E;&V=%8UL;\3"U>\Y><=0/][LF&UMDN1&5_]M(PM5V
MH]KEAOR$W8BGKHR<T*Q,<3SC;/4YY-](?BGF -FJTR=".!H:.\ GIXEE=19D
M'T7#/#M/JWGQ#T(72WE$WA(NM+CRH63Q+*2\K+L]-+S=J' ;\:QQ'9:2;QJ#
M=F:3G[*%W*Q]ELR><B-4&UI9SAO+_PS6O_WYU86+!PMCM4&)MU<LK6R/E5UF
M:-A:/XAQM1A7BW&U&%<[%/.''5=;;SAC8XH+OD!9JYXSF$KL"P;M441J(\;4
M(^O:YH&^7]071-IG18/]WA<0E#MM8YB!+W&WK><,T*;L"QX8?/Z4YP;7\]0'
M_=#OLVU=_ ##NR]QUJU8@%Q3OLP,#+S'P/LNP=#&K+('&*$_IAOK@.+V^T3K
MFMO>G8-I?(>!N8/#67"[1?F!@?+G[F.3X1!@./VY)]FR"Q^,N#]W+(\6$ K&
MUI]+E>U&A((!G_Y%RT826^"2_?35)".),TYEB8995JRJ0R(HY%.:!OF2!+,D
MC+YET9+)N\I9V2!8"\E0<!:L6$R2;:KEEK?>>:6#4>)&)NK [&#NJM'<U=VP
MCC_ ^TEZ-NG M#Y,Z_,QK6^*:6\33B#JK*L^J)]'NQU-6E2D.^N$WM)8'(!7
M!K((=+_K"Z9_,'D+2B(.T[%1K?_RU'&]HMFW,T[(ME[,6*@V?==%3#$%8^CD
M@J:U=D/XJC%IS>@',;4 4PLT4PNLJD"8J(")"IBH@(D*&([M;$"RXWA@0/)3
MGC$@V3N^QPP[G6SDK?VP4TM(/.=SB%"6;J:/J>^L(P7_:2KTWNU?XTU9B W4
MN[UQ?'C5AGNWPR]R%LCXD96,^98FC+WKG]F\_ O)UFOSP1?=Z' T]*(/,QAX
M8;9HN"JPOZ&2..P51Z)"NLV]H6-"^JP C C!B!"O(D*P1.@$O.D8^8&1'U/!
M%2,_?(M?"#"" 2,8;$8P=!38,7X!XQ?\CE_ ZH!8';"U.J"6B<@71##R ",/
M,/( (P\P\L#SR(-;PF?,K43Y\35R[S:R\>8NAB", J]3(0AOW@0T%:U(D(=W
M).MY.SBPMS'# ;1(0J>^6:?^?"Y6 +T5IZ,<D9OP3JZ!8R:^E18T75RL254[
M,A,-.!&+ZH1L_BUD,;^;)6FXN'NHS@>]L=G%V[.'2DH' ZXP^L([L'M[9RV9
MLI24&)B$5D="?D;$L5<-4R%(NW_46 L K9ZM(O- R:; X0>2DOFS6\9;6N-]
M4ZZX5 Q1^S7E#Y78Q.AOAET%M*(U;)9,2TW%&[/0D6/;EN6H^78*MBSGJA)J
M'K3FYHBSR'27.,V9E9P#RZPV9<Z Y!R0!L5\,(K^U%@'"H;CVM#$$&8LH;&L
M_1[,PD3>*A-D2T($85'!2\[7U3HHTK"(J6Q7(;(D.8U"G5R= 3\VD@5N<(K1
M0#>,@6ZH&HI)PK[+03UC_(05LWQ>)$=1>6E))O8W0F^EV'9<C;1"X>O4AP5>
M]R^^"/D%+W>MN#3RBY.N= ,H.-1XTRY?U7U81T6^9%QNL^W\J-YP@8_S+"O@
M/#QN[0+]%T4N=M(T%M(4E(F:5VQDIVP%CBZ+1>]EZ]P!EPSL)4>X:5PX[2^@
M&5>7ZHOY@_WODF7E]11'LRSG8:0Z-'5>]<= /7$S'F2LT+Z+]EVT[SIAWW4Q
M(*F'LN3=E&D$JHL8>5BA@SHBZ6%%_4%%7'-&6!=1T;9B@.'1OM[2<7@&6DO:
MUU1. I9>"TG['LE)0**TVEB(!_XQF!69H#[+9"+R3.@KE3LTK&ZXE3G);!ZL
M-ZES9=5T$LP9+U./P^C?!:T4&]F*AVL:=RQ)9IR.,6.01V(&G2-&HY>/Y$"(
MC>==_'LQR]1UR)K:#4#&A\U4.M[-I-U-I^>QF'1T3J46<)1E),^VU!RE\2?Q
M9YG60<7A)-,29%:#].<ORAVK>G9?[ZP9\<N#AE\;)OD+2R-K>.T^[@)DYVF4
M%/((^\A8_)TF22T;U3OEI;T#(J;][>#=@( IRWH8W_9!U0!'.GQ&M2]OY\G1
MCKS-7&@NB09^SQ&>U(7H6EI;I']O[8I-*Z/Q)E#LAH=I5HGNJKI-.EUT6\+C
M\WHJQB>_WZ8#;]0?L3_)'QJ<(P-^P6J"Q9!GX*9)LV?,_ <GCN)&S*I:C@#B
MH^]Y,Q<W7.T]& _*O0?>X'FRL>K<A'?C8EK_86]P/4]C,J<IS<DG>BM_S<-T
M01_>'0'@%@J\07K<:;L_5QV3A(;@:<1#ON&K$\=S9R 8=V[6?M>;=7XA]&*^
M8W&T?;3VNU-$M=%(\X4,O.;;OF9U]SP.L^66T#/.5GO:O"KD5_U&D+ZWR,H6
M9P7=V\=6)^RF0D]VPS80;N<4R3YREBF+_K>\YBI/8G9?S/<GC#Y_S[JPNEPF
M'N9[R,&PMFW4&%=[.'&U;;9QUMDAX M"[6&W(/^"+R&E@ D#].S[@L@8H>E3
MB:+%T'106-M8CA>O"KJ, )JA(6ITZWA56F:Z8Z1I>O>JQLVXHZ8R;WA5[6:Z
M"P%D.S584T?&G/DX5E:#]KR3M4<3KUI=7BAC=4"NYWKH&2:-(E>W(;,3IX.B
MEKL+3!U7C]*<.VL,%K?E59W$B8\8*"S$7-+PQ(5P"P/6$&-F+HD9AVG 8!9S
MB=6'L?WI1GZ \?X5C/?["N^4+,+JRK,#@%TGR D,^7O<B32G>&OP#USG1#L!
M]!@8*LL+/C;Z!H&#6!A]DA$M%.[X*5AL?1!A&@=,6KP#^N#Q"<+*YATMY=6%
MF7A2QDY%(>?W0O\-PI6L(2;CIQZZZ5:XPS@=8Q;N&(D9+-QAM'"',NS0^/""
M$O1'FF1.1H/_. $:?W* QNV!5EVN4GL)ILXK%CDY8YS015J9R*/[\A1-RCW[
MH]B)/JFC\.$=X(V"&*,^?(RZ^6T:8]0/)T8=:S\['6!;74HDOL_S<15=6#"(
M2G[R;FJ 4&B7=+QRM^N!HR\NF?-R5ZOJ-(U=!NRIO.^N+8=D.5V55ZN%BP6O
M' 12SN Y_:M*FB/5!:!F33F=R7#0DM.3%S3D&#7DG)6Q[$E-++N\Z3828W6T
M-U1'<[$Y_Y.$_(P5M85:>W0W:,7-OBI'YTD[I'FJY\H95=L]4^=$[(_XYOKD
M+V)5WWPGR2WYS-)\J=+G^W5JU6:A1_H5D5N-D #D?499%"9R40P"2FW/$T)&
ML=GTZVQB_-^([ZL,2!U[FQH"W]EP_']GKG*OKM33_!)6$$'KK#7K;'<I!8VS
M:)Q%XZP3QEEG;6X&I%VOTKI,H-BF2!V@Z7<0,=.K7"=CN-6I)U[E')E"KDZS
M-9C[XQIP0]L?O<K'Z3WG&C-A1O/B_!*L0OY-J!%2_\A(5/ JE2I;BD$58[DJ
M-96$I8OJEUNA;Y1M96'#+'S\4C</CDD2QO3>F.<#/3=V0G!-CBS(O6%^:HUJ
M*CK:TG?&^+6@[H3,\NL' H^BJ%@5B;1ZE/EK7U-.PD3F4,A@@ ]$\$1NPCN%
MA6F0OJV:,[MR(,,D3*'SJ&^[-;Q;6*B$$5DS(<L_A)GR;C+=;IR:$CM"'Y,-
MY%7UNMU"_6'Z[8:NQ$"L64;S^KM+88UM%<E/8_F/3(*[%2BG0J]0WXW7_H(-
M+MAJ17A$P^0R7,MB9'E5 (O$_Z#YLI[DQG'JWZ$5%/B:<;$+/EX=+8P"WK'C
M&PM3B?]YF@E52(H4#9.RI;4%^G\G27S#/H>Y!/2^=:=K:^X0!WN'K3QGMWFB
MO[.DK#>GOA^T?X>30:$ATZ9[AT'ZJX- G(64_Q$FA<IS"G[/ D]71.P65-J"
MZG?T#@?'$%VBZ]ZNZ]X0M=N<]DR,_S7AMS02"UNZIYZ=7=F-H"ZK?]1X!;.)
M3UA ZNOU1W9+>%J>XPLBZ'LJ\3>N0=W7K7!83DLY3I=,EDN(PN2ZF,7TEF;R
M<I86_G1>/I0@%:.V)@Q0.9P E39E@HVQW_H")L!<P$Q(3[[@UQXJ!-)]?8F<
MTEB;74Y)<_$LSL*D80 R%[7B+#K=1$E?5EO[Y@.U!ON"B-YQ!K'VFPMH<G91
M#65<]V6W'B,BVO$M&2.B.P1I]74%'V#XLY$H"P/[D/7"Q&;A; [+.,#HZ*Z1
M#KY(#S"48%Y2<Y'.4\)$UZMJ(,CY\2;FXK(;T!D+QD_[-H IS3J%5]>A /%9
MF @]A<A:@4O!1,Y6&R:"6.RTCUK>!Q%+RQ+619@$>^V&C!8?G!X70L<-,85Q
MY&[%D0\^S+V"R@U-.H<"9C?[+96W1]SE5RP1!"SV\S/;@G&&[MYAA#;D;Q(P
M;Y:<%8OE&;TE0V$$_X!S* T7>(WE1AR)69J6=].5#1[#.@XGK /KCCAM97=1
MRS4C+GDWFP;!4%><,EAZQ-6D_*Y2F07KRZ\!36_%;XS?[_W4S7("ZFM,JX<&
M06BQL&.Q  T1R-J@,=BCZA'G6UI*UYI"CZAO9)-:=6'+_296]<H'0N2IL[D-
M,2/\5JDMJU^PF[*%"O)DY=0A]B14;E&Y1>46E5N%-M$D&QB8$^X' V@<XP>H
M?#:)9Q84S/?B3&31MUDHH E$:UG[L*HQ'<J+J-?RQRPHY-/-98&WVU&5]N,U
MX7/&5Z4YN>RHHVYJFHPQU=IQ>$&-V(Y&;'IT0<KT.%-L7$_K]Y#',KFSH3Q-
M;1L+M%[N\+M>BG.A.<V\I;4-U5"2\4%.GN.]N7/$N;P55LZR#_>[)I?A?9F$
M(K%_L"$?[:;9M@SL";VEL=B2KL1,56F;8WW7%TS_8/(6Q$1L;V.C6O_EJ>-Z
M1;-O9YR0\S0G8B'F8Z':]%T7,<U4S.UVX#2^3,+T2[@BC9543'[*%G*S]EDQ
MTUEK-X2OWC3A9_2#:%!%@^I0!E7C<BG:8@_'%ELO[;,QSQ9?H&RWZ3:H5KX8
MMEOG$TA1\P6-,3P=DZT7@)Z.3OOML"J1=RNM'=P1!'WO%N]X4Q9B&S&7<W\P
M\*H->A;\8\ K6Y__I6J9+\-TUT,WWYA)$L;TBYGG WUB1GUBUVR>B\5+A,:4
M2T&YUNL!:&G2/6=RDH%<<^9G>1^C5\;S/8.7^.VIL4O\Z<_/X1U=%?7#JWP^
M%FTT;::M[OE(M%W)4Z]F5=8^&Y,F)5HU3^W<.K,NA!:PW36>W)38=L$,_%T;
MO!59SE:$7Y&D/$NS)5VWW"33_H:=>V04%UE^S<B\2#[1N<HDKO.J4YSMEZ_9
MO^14FT]51W;#VAOH_7#_.?P7X\>).)N:KPO2[<$M/IMR/J"ON<71#O56UVS'
M7MSB5YT' WO)+6ZNB$2:IHO]7>*2<,IBE8.X9V\6^/]<%B409)4G7,WD:SH=
M]5ZVP-T7EI:.SYP<+3BIW%"-'+6_@!YZ7^\QBHG<7YOGAZK9H<04&%6H,9[
M_WB">O6;M6C 4^>ZCXS.!A(2?<$0='E,-TW(%R=GSVG61:SSQ9/9$SJH_.C+
M3%,OQ@8[Z]29;SS#&FS>4U\CS7RK_1"^N.%[[@T=K.-@Y!ROA-\1.;#[$HR3
MX]7Q>\ZP9NT4#!*\&/X400*[=*:^78\97.KXSHW!I7JA9'KNEH,LK#& @]&[
M#:8K8,]<0-[M.QV14?GD?9$+>\\<N%?-0KCJNR E>4"E18#(=#J9A+<2^T F
MHW#+C+PB?TBWFX49C4JC>DP3H2;$3U^NWNH6M3H")6,&KX[&#L:PVJGK,L(
M@^)'1YMHH_HZ3T,NM\Q,[)/;A  :*1R>M6V?7MAGE?J3"FP@_9O65CDX3R->
M3K(P.2[G4Y7@>)3GG,Z*\H:(&_8\56,OE5;![' =VXC5(/+&9+%6/JG#P&K;
M8$2&EQ$9_R!TL90JU"WAX8)\*:2%YF*^6<#5S+XH<K%CI_+^0@4[FKU8K=&L
MH/49D4W[M58?L%UP6H8.^P<ZAK'X'\8RIFW542\HVE:[63,:9!AS4\+9.\)[
MG5>'94 =6KHW9V1UMMYS3VG0G-G5V?4)TO_-N=\G@XO"KF#!ZOQS, \I+VNY
MD6!%PJRH=HUL_^]"NIW3-$PC&B;;$.U-VSB0%>("+F_>XG(12#$XZVAX'H>8
M,6W/8W*$YF<[YN=QQAAD@1YSNHU;8KPD\Z'TS G-Y,8N*%88-I3MK9IR1[J2
MVB*''XI,G(-9)D3.F9AC<B<]9JF,#A>S4/R447&R;S;8<%868E(PVZ,G&[4"
MPFQYE,;RG]-_%U0L-+GJX/,5_+[5^;M?^JF,[*\VC8OT:KMA2($O^YJRF;PU
M1D[5\W1=Y.(Q$]M-0LOQ^G!?OEZ&W35G.1O^G$T$]ZEJ2M-O:V^7AX<??Z=B
M,?)H>?^)W)($QA#@9;O<?=X=H&><_+L@:50G=G1XTR9?Y1+)2JC?-&:O MYP
MA(^WVGR\=9*/=]I\O'.'C[HY#]O>V]]TA*_L^9:ES6%K'Z[P^G#(PB8EX%4+
MG&UE0R$5PX6QYI>L.GT_LY3<5QF79T4:MQ3<:&R,@1!X><10CO*1[ [H*S\<
M7[FFHL &.74]!$^A-M;A953-]A#:5BVO95(V"KN^X 4HP*&K-_L2"S/@5&H6
MN7T!3&LN@<U+OJ SP(G99NGQ)81F6*AJC4F^)"4."U6MO<J76:6U/369\SW<
MD=K%4(BUPI=%-48@\%22>1T,!'8VCJRSF]B7'04&4[= "7/'D+/S"1PFX]W&
MVPA+[]@3@Z&_K@9+ZSE-+$2ZJB\XKNXK9NOJMN,HI[=B0#N&L/;\RIBQJ8.0
MBD&G=H).>PX>*)ITD DRKJNNZZ6&%]M[# F/:"9%ARK;0^7M,_6=:6/V)&%F
M\X1<<AHI_:;C?GV"^ H9=DYH+@[1['Q3K,@0EC5?LGO-45^&/HJ&^0,O33<&
M&?B2U4C=OOSLI;49W0B??2?X$5'K@-I/?J!FX0 !?MV7>>DPPD[/X0PFA^Q.
M3A- &R%BBFC72"HV\.Y(QA01?RS@V  ;3H%=R0MC7$>@ED7?SK.L(/%)(8->
MJCE1560H'S[9$)4:DW9'0(5H6K%:9LU &+5[.%&[6.'*:<?VNMK>\I#G+OJ0
MC%L3S,VQPT%61TL^0)?Z")9$<\[XZ:)J3GLPX,MW_[Z2 01C,&Z.W[(UT@3M
M8;L!(PV_JFL",W0$9Q<8V%]P"O<UAX&Q_K6;:'::>CF-6UU!8%S?(Z[]G19P
M!6,JBKQ1E%OB8.!H3L4F,!::7?;=T2(QW[P-,K(H?^=D+6_B2A?BIUN2%B20
MP 5LO8FOS8+9_::19.OAO6[!F<-_>,QX35/48PBGT1#.TX*+<;FN1J"V7DM;
MLP&(^-_A.DQ;:5"W&H"$K_):OKC<";-62EH;FXRM'7ZA@<)M3:WO/JZYC.=[
M;CGQVU.7G+S,769$L(3&)6GEZ5:SR-H;6J.V=I>"-+7@^KRHID"ZV*R*Y@I0
M+:TMT']5S><S,9UE2@T/H_P?-%]NK]D^3Z.DD$*WS$P2_\4WX9V"MQX]V7!9
M5P/06"ZNMHW-8(!M'M1V]C04OP2]@^$86')LJ*@$ Z<E!BKX'Z@ $$.8SN$_
M=3ST]F\&.JR\P^19) =4F)UZ3 MLM6A)FU.'I$.83[M(Y!TH;;N(CI)O+HC$
M97!:[4'>E60 P=)FHO)NLA@,I)S*Q' PD-)%]U%O@X@KKJ#-G<E/E;@!?3ZP
M+UAW[NB0B5X<].*@%V>8%=7=7:.S8M$OXZ-?YOEMW2J?C.I>;_0GH5\%_2KH
M5W'(KP(\UM"!@@X4=*"@ P4=*.A 00<*.E#0@>(>+.A 00<*.E":CU^59<85
M!TG"TD5";TF\O49S=A\L"%OP<+VDD6BXD 5Y!O27=/J@=?=)#ZK1FX+>%/2F
M&%E@W9TK/=8S^EI\]+5,U&=Q*7<UGM]?)F&:'Z6QO,II+4G[0G(%$TVOV"UW
MB?X7]+^@_\6P_Z7;R8?N&'3'H#L&W3'HCD%W#+ICT!V#[ACW8$%W#+IC''#'
M.%OX5\?PX8I[)J99N%AP63M5JF5L_E"78$"7#/@CUMTPFI2BZ\6HZ^7XR_'G
M4"S+5 S-&>59'A4-/H?VU@.0=)[^BT1R;GQFB4Q0NY03;B5^5M,%?&4 XB[R
M)>&B^[B(%(;FMF8#$'&])$3@GH>)F@)5FP$^?R.>DI-+3LL[T,_$?BW>(6I2
M(.U'=U:!MZ'N#BK-G<ZXFV<S'R_X->&W-"(*EU13LW$IS<0)OR%"[9%J;8ME
MS= -@6X( VX(^/Z&KH?#<#TT'AU,:[^>.APP*WO[63MUVRED6NC+\%.W@X%1
M@6I<4[>*@0&!*Q-@2. W-;D)2;.J!X;!T8N7P#"TZMQ3WTK'-)X[NF].P7CN
M8B[#Q(I!10].>1('LS )TX@$F=SFLB J>(E)==]04*2AH#S?W>G<;D7OT_M(
MYO/^)*+=?!B[^4 VAJ,H8D6:9Y?AO=RQCJLQ5-@:ZAM;#>S=DG1%(D)ORQN:
M2 [CHND5.YR(K3BNDKK$/D>R5C::V]OCX1,-9S2A.252FR[EG[T_-?,#>]<.
M;\6J2.3.5U(E+[_B9$G2C-Z272J>F$L7<[7=M&,O-OB-Q>XM#HTPN0RIF&;'
MX9H*45X0O&)I>;>JBD7PBS:X*@.359174<OOK-/7LO+WV[A#[=$L*P4X"-5/
MVUJ@?1OW).;EC*:E?"1%4"%L"OID]"6--Q6$MOO/??.P].]P&BA\86DT-!#/
M^[2 Q7&8+<69(_^1\3NW85+&P^7'(>?W@OH_PJ10N6&TWK7!VV[W;61#T<P"
MQ2<;W?9!P-D3 ]09:,"W+/!S*E0S=D^$!EJ>_GMT-6\KX/<L\'0FEK?0 #^1
M,"/ 71+RBBN<M.YTP+<L\W,E+UF]F'_-2'D& WA1O&&!CX^,Q=]IDBB(?OK8
M H5["MA.HU20V]C6"NVW8IHR?J_>4.N:6*"T77_<:V%5)GZLP)9'Z9(E0N+)
MI&"0W[>37_N:*SPU[^[/&SI&=XN2TOZ"!2X^A_P;*>^$NR;B9 $, ^ -1_AH
M/6)A+]DL[Z C_<!><H>;UN$!OV>=)Y@4!'K'!B_26%B94-K'I*FM+=K/TSQ,
M%U2LXPUEZB%H:6Z+@WU-$C0$C2]8*>BR48Y;S0 -+>W0O0YI?'JW)JE8B1NO
M ,12JO'F] OL6.3D2L;5IB0^#;D,",OVO!PG9$XCJN('_B)&C>M2?3&O5'H:
M)I<L*UTR+=*OSJO^Q,,;HQ:H^3FFZSTGIW76M+W@3S9"IY6"60;^9QFT#/"@
M,9"3#0.%GI?>38;G?.ZA 7",^P)(,ZM[F'1PI_JR?, 8@8U\O@17@Y&!1_A-
M/3U%&QJU.V?J:2D=H&AUQDT]1T4;$VV#"1BAG[5K_; \3,:M]0/?8)HB\,"0
M_.+-I($:I<#0_.H)-/7Q"6 8WGL" \RD#Y?@?!%S=9R;<'1\$7 U?'%P<'R1
M<<'A6G!H?)%Q ?Y/."C:TJ[[<DMG@<7QC05F;H&&^)BSN5BH8@E@ND9_;L[S
M\V7:Z&&C&8[MB^U%>P+IYO+Y8HG1 VJHG"%?C#=ZZ.E$T_EBRM%#")YM8<Z0
MXS(^P"1J<R8="]*B'D+M$=V^&'6,[]R]E1''S4&#;-[]-3;'C4,#;.#>FXCT
M,-+*^?3&4J2YVH !R0:M15,ZZCJ?<8Y/&IB)!!K1YTM8"H#?QS[2YN!X7PPC
M>K TEP[P9P'I8*);"L<7(X@>2KI) +X8.S3G4I_*4>:L'Q9.=3W<VL/KO8IA
MT0-'-^M\!]7HY38?_IS)BO[1_NP/:#G]>]?<[/()&X4WN].)U3>=JKY9LX>W
MU \$O.$6'RW)0QIO6N$K$[3((*[]:R&NV6[S?<9.VPLV*D]MY*I+PJ^7X@!I
M&9*VY@YP\"',: 0D_U%;!V@_H4FQMR^W4/^DM8T*3"0E/$S$=#Z*5S2E<C+D
M8K%N8H05? #?LL$/%U+R)6=S95+R7@NKF9@[H7Y;'YVFA9@<&\NYD @^D#GC
M9,][=7HG<!;2*DU#?E_:=Z2A3U969XD@<'&>YD3()>IB3\:^Z "2#\:OE@VP
MI;7-&F.;Y?-!K"[U_&UI;8%^<:3OII:"ZD=MK,Z6!\_4!C\5Q<_:N45URRQO
M;6^3A];94M/2+OK2)"-V/O:8KN9#$O:2E7H>&1&JODS!/"&W)&%E.D<S,Z!W
M\,[+L?ENVP94S6Q4GB"EQ" F4)47L=N;%+2WOX!58[RLK?(/(C,>2'QT*S;.
M!?E2R$NU+N8;9:E4G+*+(L_R,)4+4L%.QU[<X?<9B4UZ<:<^'.9U,TPG-),F
M]8)72ZAEMQNV<__JVK2I/EC*!DO98"D;+&73?)V?8J/T!0LEEV8N-ISV$H*
M!?6:F LBLN"HAP#38(GV97[ -A:@L<J7'::=7::O!?LR8[3 T;!*^1*BJ(6/
MEI_.7'BBA?U7"Z964[^YF,3)0*.VQ/N2>ZF'BX9QWZL(1"V41O0XFTOB='@6
M@GS!YC(X79]^C4YG7P0"F(@-"_OR1<)NY;8!F1H+N2^R=1]8:D/5_,EH@:PA
M$^X%7U;<P-AT0-WC=3LZN# GJ3^96I#5KQW+[LO2UF$<AI<*)]M91V&V#.8)
M^YX-G6O4T+$#&4:MU&%>D5-Y1;*L$2GWD!7C.?VKG")RT\ZJPGY':7S)R8H6
MJTP6A,_R<JB?L-2OLR#]U28 \;^*#2$W[(J(N1W1\A: G;9WP^3M$I><W5(Q
M<3_<?\UD!9$'[?$HRNEME1C9'%)B\E,6D(/7-3KB/!1_+3D_7LH?S^44*>2E
M2&VED-XHP!SYZS92RL1,>'*MR958,YQ&8E/=7'OR^ ][+1_<QF+QK5D6)A\Y
M*];2MR$78VD[(_'.=*8 >4P2@A\1Z]&P_FFJ6%\23IFLW\1EG:L34OW[P/[I
M752N\"LAE)S.YT2=33HJ$583#D[(+-\5C3^Z#6DB8Y3.&+\.I00<)O0O$G\4
MLE%#%H5>)W:/]&=5OD"Y4,"WK/ CY/>(EDM7_)Q4(E8:[TM92J;@K]K(>"U7
MQ\5\?\5<I YLQNX09F%4]BL)7G(JI-2U+$MTWR3Z-[YC=SMXOD\_J5JN8 G\
MGE,\/;^@"LS6[E4'!^Q)\=T.0]?<@Q-\;N]<H\I,TL9W7!NV![UU4\VL/9M:
MLP,WN)3A&[L:M<_+UK>SJ>KAZ44*ECF]K.Y\VTI*M7>_@9F&=&9W0LNK(&NL
M,9MKG/>M,0JFX1U851#@9+8LX.X=N<-U99CL,;HU';@XNC5D=AM=0$?N<%UC
M2=7CMJ8#%T=7WSC=O:,I5 FQ2.LVNE.ZQG1*/3QK;_<PW.IR9XQ?D77!A5Z<
M$6E ?U:@]@D_[2^ZP=CFFJ8;)K0#F8 EJUN*>2\M7)M0+J'2LY4<BB:+2]?N
MW #AAAU%_RXH)T\M?#O;G[0$MO .[,4QEK<>)5)5QBWM.=4350DVG2X<8W9S
MSVJ;1[?U/<?84EXP#.5/V8%E1CF+"(G+T/?S+"NDK6T;M/4UC<LT44$DO94*
M5/T&(SG:&2'+C?=BW60#'>6;EK'\'.:;#:E41ZO)(-@Y#I,DNYBK]R\ 9KW[
MMHR-).IB_CM)Q"&VX>5>"P!8!S9*V.@<Z(KCVJ9E9N*%@ZJ#\4Q&B;4H)9!7
M_"F!-,V03M 88348K :#U6"P&HPB'KZO\<D7M'K@H$I5]'R!-4XK\P&WODP\
MHT@]NH!1-Q[)W(S-"<_(N!G'8\$,TUE\R5H>;_)J1 @:2&=]7X&;"@DJW[3U
M#N.!4D@,I!,> OH]HWQ]J=XR%MQ6<E@,5) YA*4!=\OZ<JS"9.RN07L&)&>;
MT[ ##(T@ F)R#4C&/B'8%!=K8(GZ!%VGT$Q?ZK<86,F0R'-?"F"8V@C[@:9_
M6?'XQH&AD0-'E7M54[ ?BMVC/GW9_GH9[,&QP)Y)?SW@V .U1S"29[*@(3QU
MPO,\$Q$-(=H:#NB9&=00C)IQLK[(B@.AV3'DS!=KY? H#A2YZ)5<.0S*W7/&
M?%GSO>1+<":A+W[Y'C@HUK;A2.[#$$1U\1\J)^@PA-*.Z&HDF!V&5*J)HUX)
M%W/GD3N'NR: W=/]/1=%-7%TK?C2(<BQFD-DMWP>>$"T[V=9EZ0)&97G!S<L
M/>MU@@=%^VJ8:E!.TTF>JC;+>NZ&Q'(U]$R*MU+:)3P+B. OOQ^X+#KH"_;K
MHVN0V:%0>J\RX,6J*+63TJ1;4W#_,Y'W.6QI?)+LIOV^E4K? F4QP%*HI6(A
M;]R!S7Q!WK%=M5Q!9*E3SI[JE%=RUF5BNFTNSZT.8QDXMTC+7OX(D]U^^@R.
M<3YKHRKQ3EULG!'*=G9I5EZOHB;_V2MV*W /S(O5"M?MUY4\9P5VP<FXY7G+
M TK2QE*QYFOOUP"UQ1)1C;2JCLSRLDO&"5VDQX40E]/H_H:'8D>--FE3Y6])
M)6 _;,TM4\W,QZS60VABZ>%ZH5R(V+,BEWZK&W992O\MU0>&ZM8A1+ZF?)/$
M\7ME>][F<ERD>WD?7)S40N<0OZ:+ZJ#N.*>&^IP%!*](+F@E\?;NPD:AH+FQ
MS0H53[;EK.9"(JUWL-J)?K634D+9*'T5MO"R)^WO^E/_Q!BU D+I]B3Q_AY3
MB8QE $Y&F^I@:;_O&H]ZY8ZZ]^0.WZ4RV7UHE:\[QN&^&_[TCO"(9LI:A9W[
ML<7SSI<;ER;27(9I/I^23>P"N[!;V@]&:9-51J,'!UA]=)@U<?2HH57;1!^Z
M07:(:08GZ8DI!U("K(7'.A3:Y6WO0&EDF8&MK0:BS::!BX9?PKMT="A&$*7<
MNZPM\ 3JYK#S+@H9BA? O.W=9N1@\4)K\3FPL'4=[YJYZ>(X2.W"O7='5CL>
M?2PNWAUB7>""&C*\.\&ZSRVUA<N7>.3^,VH C+2C@EW$:-S('P,!OC;S,S2F
M85>3I8'H6U\0JS=\@@%[[\/R':0D]%2,2XU(#!O484[3L5" :#!H@' /%VWD
MB^H]Y@@,&YOCB\IF8@3 P9V^*'(F0!Q/2W9<\1L1W,%U:L?511/0.JHX3:.X
ML[&Y;ES-FH9B:@_?GDJ9=@[I]#>2(50X;5W6FBO!D!QFP#LS'1^6L=4^C#/G
M34='U^B)X://365:=QNBVLJ61XBVQ^*-FQZ?LIP$;UX'X2[R(F"2[R#:9SR@
M)>=!(B]8J7M>/HAE;$OR< RTI\Z;_/I(:?7F6>B0<I^1Z(<%NWT5$UK%DXH?
MRC$H\5==^+D)&VV^#[1#B&L[-8KK-_<(:KR@$T;3\XDH__+G;BC'&=0-4U:^
M;:,FP(X-L6?NS'N[\KQ;"Q^TE(-6-W8Y]K=JQ8[&6I,XE$' RYAAKD7[140_
MD#GC0BZ(DC#+Z)Q&51V>)I%%P5R_SAS*,-X7V2[E%7YBOFG T*_7IX7"1LX8
M?CQRLMKJ$8MHY=_*'WM/-##IW:_MI!],178D%7DZZ;J8)#;U)#$[4O>!))DU
MZ6FL3:^<.O-.Y'!,!9M1LP\=CZYQ+DG*\5B8/GB!U4U?8E[Z@-7!SN+=FGRV
M4;7:(KU;9IAO9S&5;"KKI!&/(:Q(!I:5^YD$P]M8S)UK%BX-&"ZT7L-X9RY@
MTY*7N_.>9M]O_5XH\(*L,D:QU,,?KBCB#[7KJR8!JT)%.[JH^W]H3&_T4-2B
MX]F.X[G_^(%\S$--DW$=C]]#'M^([S;8Z6O;6'&];&%L+^#>V-:&W;@V=^&(
M<WD'CIQ#'^YW33;7<96X5X?#>2K8*<KX\O+\O5F&Z29:_XSQ.9$72YRGE0"C
M,DB/1T&0OO<9ZD*LYW\0NE@*EH]N"0\7Y*/H/#\1V\%92'EC%3\GB+-:Q]L<
M!"6CF;5U\/CS!X&Q>\M DSY/1^D+*^V+)/Y2-!R2HWW?KLOV8%"V>1O*"%RZ
MM]G 2?-]!4QZ;/Q<-W^4W%N3AAY_WE>5X#&7[JT"3?K<%H<R%0P["T4:RSOL
MOX0KTAAE;/)3&+%H-V)Q6K$\QFV*&"QW.,%R]99:-N:^YPN4[?$:#69Q7^(1
M6N<3P,SN"Q88PX0Q3#W\_;9,;>:6'R*N;?4QMQ%8*"1I>QB:W2T&([,.'6IM
M*X*!&*_'P88WAS<D+>8U,.3:Q?H.</KW-**!QZ)KN;X#G/[M,2=@U.%%_ YW
M!?0)+@$/A':Y/[<C?&VY?<%X=ZP3>+AX:WL2G8KA%J,W9WP5IA'9F(R'#MYN
M_8(;4=M ,C%<VVBX=GTYY.?K=::]7B]WXWN\E+W5A7%;^/RT0-/U93M+GYW4
M@M9-IF=. 7 3PV0"!:U[\ZDJQ=J83M#2VL5@"4PHF S4'B04O/%R?#"AP#G;
MLO,)!7ZN!#\"?3$(V]VQP2!L#,+&(&SWCQ ,PM9";G,)=Y$O&9>%O[ZF,>%[
MMZU)\A]N7+OD-")7DOW*M'\QWSR1\5:;R:0%YN!?=_ (]0UAJP<A)A),-7#9
MG"$1,P@P@P S"#"#P,A\ EG6?4$#<P@PAV#H"!?C(CYF$#ADLL0, @\R",1@
MS]AA@ZUM!,,< H]R" YR ?2T AO((G"PQKG=V#QS.0.'C+%FI)Z!?(&#W^D'
M3)?1SAHXR,V^3_ 47.'JJ.%.*H/#N(,%#G='!7=2<+N?,+-Y(O\G#R?QE_\/
M4$L#!!0    ( $2( U/.3+M3/#H! /IP%@ 4    <')L8C(P,C$P-C,P7S$P
M<2YH=&WLO6ESX[JQ/_P^GP*/D]P[4T79(K5[?%SE\7CF^&3&=FQ/<O.\24$D
M9#&'(G6X>,FG_S= 4J)DDJ(H+J"$JEFT4"2 _O6*1O?9U)T9Z'5FF,XO1U/7
MG9^>G+R\O!R_=(XM^^E$'HU&)Z_TFB/_HE.;3%8N?!W;!KM4:;?[)_!M>"']
M0M,7UZY>YW\97FIB7756KW2(>OQD/9^PK^ WBAR]KYXXA,Z);CHN-E6RN-[1
MXF8&U\HG__?C^X,Z)3,<7JR_NBUX],H/PJ'HIJ&;Y/\^WW\_<6UL.A/+GF%7
MMTRXE]QKM8>MSG*0<.GOR0M*OXT\,GXVFYZGM)1^>!//:;EO<[)<Q EVQNPN
MX3?T1X-66XX,TK'=I%\MOHKYF>?:Y"F1 *,3^'XYMZ3KY$YD?I%9V):1, OV
M3=PLW+D=CQWZS0ITWA%E%3GTZS%V%LC1':NKR(,TK/E7K$#>C85\SX>\NT2E
MOAF5K74LNU//U(BM63.R\NO[+]^^ZC#\)^=8M6810F4CTVLL[V\8BT;T^&6'
M+U96?6X;XY7[SVW+M0P\9H-EE[;[G79XN>K9-C'5M_B;A]^N/,'1U00$Z.K*
MA>15G<9?2;]9N=1. )5-(24/5S&H6I[IVDE#]K]<N3O@^0GC>2S0Z1?LXG?<
M&LNG,9=JKKW&V"ODAZ]/Z-?TEVWZ2QC7^9_0V91@[1S]":$S5W<-<DX)%U+G
MWW+[CV/0 V<G_G?LLO^OU4+?B$EL[!(-C=_0HX_/+X!/=&?9+C90"PU/%#9&
MU#WM]>$/NON!6BW_#C/B8D3'V")_>/KS+T>7END2TVT]POB.D.J_^^7():_N
MB:^&3L[/3L*1GHTM[0TY[IL!_##'F@8L<(K:NHG:Q[)N?D(3N$%K@F>Z\7:*
M_N</SW(_/>HSXJ ;\H+NK1DV_0\EQ#Z6D$-L?1+\SM'_2TZ1W)Z[GQ#@SK'L
M4X0]U_IT='ZFZ<_A<S7=F1L8[F]:)J'?Z:^G=(#$]E_JFD;,\S_1UW#%C3>#
M1ZC^U%[=>ZI.M7^'-&S+P<M^BW*$B2FC T.=7IFP[F^7L!@V-JYAD5__1MZ.
MD ZZ+2(46O&7G;>!E;O=3K\_.CM9&48QP[HG3[I#=91[ ]\DC6KMJO,[*@;0
M=Y #Z-I4"Q[8Q8R8&OQUOQKXZ0CYNO.7(U"VIV,+- DV)]@ 47_._BOXX9=,
M2+E?=4?%QK\(MJ],[0OPR-%YJR4KP*@%/^^+I7JSQ0/OX!:6]A4^<X[._ZZ4
M^BPZN>!)]/*D9WVUL4HM%X8,==#K=#OM8?=HY=GZR@,]4_<__OGP)7Q\(!M/
M+PS#>J&JZ*L%HL8;NQ//N%"9F'7NB4KT9SPV2$"$(T3'";]NKZ+ ]&::Y6I$
MU6<8I$KP B3F]<W7HW-9&HT&X6S"T:=/IQ<SG;9/;@ZF,QC*VTP'I$56Z@#<
M'J;8)NO3N@-?@,"8M0?74G^_P_:M_>!21?$/;'AD^:L\\VD?@T#;;CZ9R=.0
M^?0ST2?#3-@ESH7G3BT;%)Z6$V%M"90,_;O=- :9R,+]-(;%4N/:<;P<4VAU
M $K;#7Q4[/I7-O!>NZ$KWI.;NN([:X1+:S:S3"[$9V]G=<#39';0!9%I%"1!
M>_E$:&\'3<#/)';0 ^\FD9.SV024@33HRQ)X[EN-O[^#5'TW_EO/I1$CZI-7
M.HG>#CJM6"+TI<$ _H[ZVQ%A!PU1 A%R3:(_Z!PE>):*$GWYV7-TDSC.A?J'
MISLZO<W%J^ZTV'O0=!WM5V_L_""S,;'_S60L=3Z_$>O)QO.I#A-BEU]YMC4G
M_F61-;KZ>;^^0M\L2WO1#2-\P!?/AK7Q?>;%"O6S:M$>-1G[Q[WMUF; Z=I\
MU>%+8NC/1+LV 35/.CB>%XY#7"=\IIQOC>3C9/AL$8CX]YV!31H]8A/[;IE/
M+K%GU^ [FRZ,FGZKM&4EG.OJ[!A#T/B^!EPR)Z;#-E,N;!LFRE;N\]ORDCO\
M1C^Z>,&V=O4ZUVUV<0B3)3%'_<'*.M#=HU/-L]\(MBDV"HB^_)L-@@9$?7(^
MW-VM3I#&:4^O9G/#>B/$MT@\6YW"-.B"W$[ 9HQ /#+V@1([=I @[O3HO%_"
MV*.#O)W3):V25L-^U;1*FN^_[^E$V#4_@.EFWBQE'3YO7H?/Z^O _OD'<=P%
MY>75I4B#;;>FE<"O=:S$,&4E>L6OQ#T,!7[I!EX<)W@8I:U"IX95J 4+HU$>
M++S7\=UV.\4G6UL*& A[)F@QWV9[IZI!G),580\_H2H//Y';R2.VGX@+8X+?
M7.(YC17?3CX3F.$5MDVB79CAC+];+\3^KL_T912YI102+\B/@\3)5T)QH--6
MN&?OHQMZ+"!#8/ .O*?Y Z<.VRV'%4 LR^-TRA)F*-5:X5[J\:L#>LG_FN[#
M_G+DZ" >R1'<?_4>_@-7'L+>.Q8H>/:69<.<!NO.)I:TAW,>7$O89ESX3M?H
M^XE.;,2>2F)37RZO_[:ZB;C^X_/PH]6[S]F*A^_ $;%=N@]VOAQA^+OE=XMA
M:I%+Z0R6C_"_"=^'#SE968O%VE N8@OC.TSA_6<$.\!6Y\'C&?;"6X3?A>_I
M+6+7.N3J04L9<;# ?HJ&>[X<U.)&P3?;KAG=KEI?L2#IY12^R[U@G"!R=<&B
M(-MRP=[-,?37N9IC.]Q]WAD4BQ!G^!1-?X9QG4<N93(3NY:=$S_O?D\__$),
M:Z:;<;?-RL@KMSA9'?TF^(:RM<N];.U6(EO?K4U[N39M/M>FG7UMVH6OC<S]
MVF35R<6M351<+J-85W]X-)$)C#W+A+<.,Q8CT<W 3"QY 8-U($]T2/Y;#1[V
M.C=T57?],2!-AV\=,$<CYFK:-([.8Z*U_KW.3F(?L5C'Q4BJE/LYB76A:2QD
MB8T[K&O7)O@FNHN-O2!<ZMSVB8CWQ,4Z.)'4E:3IQ7M!O?A)[1/9+E35FWD&
MW9&^=:?$IE_;9$K7ZYE<FZHU(WM!R<SSY)ZX,5Y[1RC$0NFV0_BA$R'RKF;@
MUD06BO2 B2\4\$&16RCN$A4WMZ#@+0Y0R]KHPNPI.PZP1JQ=?1%AOM01!ZB%
MB,(,:239A#E131R@'.)R8!:4,L>$732A],LS=6O:#MR:R,)8.&#B"R/CH,@M
MC),*8QW5@T(7JKT"?[[(G#6AHFORYZLGHE"UC22;4)F5^?,%$E<>B>RV\H@5
MKFZUQ!):< ^(*+1@(\DFM& E6K DXG(5U2YPCC$Y_F(KN\2@QG:'%8I,X-B:
MR,)8.&#B"R/CH,@MC).JHMH\@8(#HZ;^M=&%V5/^2;Y"$TV$^5+/2;X:B"C,
MD$:239@359WD*X.X')@%I<PQH=:#4/KEF;KU%:W8CLC"6#A@X@LCXZ#(+8R3
M"F,=U8-"%ZJ] G^^V*IS0D77XL]73T2A:AM)-J$R*_/G2R N=_Y\07,LH@,%
MKX!-F,,1:V][&C>3TJRX8%FS6'%KEQ9P#D,0M(0LX2B-"N4_/P]NJPXP"<7S
MEPKI024FAC&Q:\(W7RV;J-AQ#X;F&Y_IV.[I8BV/SNG;E07=[<ZQU/"?$D\2
M/J312I9<"4<%A6!J_HF_I(X/@K8U5JXJHG,";146WGV]BCM\%_X^<Q> *AN>
M[3^>ME,[ZZOEJY[HDO&A<(HR?TO&VL\'@;"-"&.][.VWTY\/^X6ME9.;?O/$
M[W'-$S^__<#_L>Q+ SM.8*#;OQ/:DNB>L!#)^@_XEEU;S'09$,HVY?(\M1*:
MNPB2<TSR@GK=_(LU ENS?3S7/OW7#E;/JGDL4,09BNJQM@M1+#<6#:W/B4LN
MGFS"U/$^8B)YFONK0 1I>50410OXY.DGMH@]<.IG<D[6X[G1!=POU5$="%<Z
M] H0EK2I($ H]-T^0"*W24LS1SR7V _6Q'W!-EG[P1Y"(M.,]]?0%02ODN!\
MF;^"]J73OL&J(%RC.P.[$\O>)]N3;<K$SV]_);V@Y]X*<D': Y;3CS;6R V>
MD7UTV-8GM[_B69!QWZ2RH.CA">-+SW&M&;'9]BFLLC/5Y_M(_I1Y[J^(%L0]
M#,&=,O^#V!?,0_^-(Q(;@R7!<&]W!BN#H=@:%%JO,JW'"2A6JJKR4BH^?U75
MHD[,K1K^6+?_@0V/?'Y;O/P5YH)M=?KVG3P3_U3"XKMK<^ZY#OM"#N1TY!8_
M_-15"I2O-OG#(Z;ZMOK[R!7./5$]V];-)\XY+=,2+9DL9:WRR_28P20M=LQ(
M4E:]&:Y, 7!5!%PSPU41<*T;KAT!U\QP[0BX%A,H$L: , :X#GT5!5=A# AC
MH$%P%<: , :J@FN,[<K"2I$SHY9)WOQ3E%\]4W/>@U-8#QLAM;JFD=.IL8M;
M*)J%X<*/6U@Z:QV@I=-$UCHX(VL/6.L K;(FLM;!&83E1X>$02A8ZR -PO)#
M \(@%*QUD ;A'K"6, @;P5H'9Q"6%2'436RJ.C:NX8:V1T<6E#!EI3N="U.[
MLPS=I74['[RQIC_K=/WX3ZR+F]62D-FFUPS;?A,I+RU[;MDPVR]D[#Y0L,)\
M&W#8)YV"J;/:#\+]?/AF/1/;9!\\@32"^>T5#;-.L%GDO,3.%.0*_8^V0WK&
M!@D;/7W&YN^/L%!?R-QR=-Y+%R5/9$G"^!DU@V"1LU5"!U:L \OR%(0.;,S9
MY8P\*'1@ \DI=&##")8L.&<S8M,O[C#<^\9RKTW5\#2B_5-WI_&KPS=%,TC5
MO%/FGN1)Y^SN#&S2(@F,Y-\M\\DE]@QF30?X3,O9F$I;5OBF:W0.03V>#3,I
MDEPU-V.Z\VSRKB-!< MX&?Y^Y[8$%R_8UA[?YCY2KA[N[O@&Q<IX U0L1[U'
M /@!7TQC>U+\*(OXL[EAO1'"^J'?SNE1U$9A(?PX<1[-1T>!1&U:08G"B+WQ
MB:)@1$X8-:$@1+TPVO."#RMG^X4T:K8TVJH, H<P$M*("VG41!CM/5P:251=
MN"[\[K]E,R/OB>/:NNH2C<UPKW1_[-P:J/<Y]D(VPJ?!.K\"^.RO][&R\Y$!
M,WN-#=[W)@1]FLIA@H)\&5TI1+DC-FU8@4V5/$RQS7M610)9$F;!/6&RB3Y!
MHV:)OW@#0U"Q=B-C8Z1'T*@Q49Y,&2TK<9([SU:GV&&Y(,V,*,1DNFR8H8@K
MU(.F)@08ZD;3_H89DI2-D$T-ETU<;5()V=1PV=18N^D 4'.P>D?0EF^^[:[Q
M+3O*1^=!#R6X;[2!N&62\,S-A:IZ,\^ 2[1'&YN.WSGF0ON/Y[CT1WS3/'5N
M2W\WVR3+9/5N;:S>76-U 8>ZX=#.#H?RM;J 0]UPX,H0$'"H&P[-M!UNB/O3
MM DV]/_2CG7/Q%^K;U@WOUL.YU'R[8&1:;K"GA 0J0LBS;0Q!$2JE2(-M#L$
M1*J5(OS8(I>6Z5B&KC%S[!K6T<?&+=P:/C*?'OQ9AH4^%VO]V7-TDSA.^+U?
M/(:VU]7\*D?!%WQ"AP:;XV>^Q$O"$N0/>+_#:]P:!C&VQ)4\#/-'H%*@DC^+
M2Z!2H)(_(T^@4J!RS^W**\^VYD3@<1<\QJRAL"4%$O<<B?MK/PHD-@N)^VLS
M"B0V"XG[:R?^AN?8%$#<!8COEU!8B0*'>XW#_;41!0Z;A,/]M1 %#IN$PP;;
MAX< JP,VNP1Y]]J:$>3=:R-!D)=3W:N+) ?N[;]*MI/+;_THT"7056B!J?)D
ME]C6X'Y;HV'R2B"J28AJ@HP2@37. VL-DU "3\W!$Q?RZ1#@L0=L+\A4'3<E
M[63<V9;FJ>ZM_4#L9UWUJT)=F_\A*NLC8\&<S">XR+5F\)I?NL7-(Y!]&V9S
M&%L:@LZ'L;<AZ'P8FQR"SONUV[&5?KZ\N?R!U:ENPJI\U6W'53V.':,4$B=/
MY("ULJ#N/NMB0=U]UL""NONL=Q^G-B%?[FS==-FRF,2 OXVD;]I4#ECW"@KO
MN_X5%-YW'2PHO.]Z^&%*"$S7Q48CJ;H^_ /6MX*2^Z)7!27W17\*2NZ+GKQU
MI\0.ON%XSSV%F#$S.&!M*>BY7SI3T'._-*>@)U?Z\^Q$?SVUB6-YMDH<("]]
M/R588Z/7].=S]">$SN@+^!^A__GS*VY_8I^M?GLV1X[[9@"19MA^TLU3U)Z[
MGQ!]2 L;^A-\8) )?#*!)[<F>*8;;Z?H?_[P+/?3(ZR]@V[("[JW9MCT/Y00
M^UA"#HQ\$OS.T?]+3I%,;WUT[H_E[&0.HZCA\6<836TR^>7HSZZE'H6/+^C^
M1^>/>&P09$W0)265Z3IG)_@\\V15^ 6QBYGNT)_N^/SGS?7CU1?T\'CQ>/5P
M=C*N>3@/5Y<_[Z\?KZ\>T,7-%W3U?Y>_7MQ\NT*7MS]^7#\\7-_>U#;&=CC&
M?V)GJIM/KF5*Z,OQY3%2VKWNJ.9QK3#.U'X_@E>$/=?ZA,:6#8( AN#9-HSB
MTC(L._RTI<_P$]S3M$SR";WHFCNE#_CK)S0E^M/4A3?SU_B9J/0^I\A^&G]H
M2XC^^0AWQ>KO3[;EF5HK[OLC=!*_7(4MS-8"I110?[V]_X'.0 C#NMYX,[A2
M12:FRD\C^ND72_6H)GE\FY,C% CQ>RJ$$HRJHW.YW?H[D^K+&YY'\.<R,>.3
M])>C-MR4&,8<:S2;:/'>F6,U?!^LRH+@E.)L5723ZEP&GT*9R!U;&NA*%Q22
MJZT]OG/<@<<_$]O556R$A'&M.?P0U:N2SDY<+6;$H_[Q@*LA?_B![=_1K4D^
M1H9] JL-MD"P]"<,)$E,@3J#8Z5272\P6^A@-PF;OWM@=1+;>+LG<\MVC^ >
M]@R[OQSI,"BPPT_'EF6,L6%8,.W7C&()"*KT9?G3>]'4(-X!>?WWGQ?WCU?W
MW_^%[J_N;N\?T=W/^X>?%S>/Z/$6@87R"&8(DCOH]A[)O0_:1W3[%3W^>H4B
MQLO"<+FX?*1?RZ-.=R&AH_S8"#@U4 12M6O9"/PZMNSC<_1'"'GD^TT(W"FB
M!5/;Q"]W["=7O@.VPBVG&CV&!L^?:OCMC6 PJC*RRV^>25 '3"'Z8:(ZSR&\
M>Z/C ?Q'7X)<3!+D*\)248ZIN5*E)\?', $9EKW!=N=CI$)=UJ<N69=<G2;E
M%Z\OVXW7EX_W%S</UTPK"H79?(6)W 7:0U4YL:T9HP:(%#,<&AN-1E3+9J=&
M3Q'X^:!?=1H[8/?S5Z&N?WWTT $S]>]:S9Y ]+-<9D$%D;%+:S;3'1IQ1U]U
MT$\@T,8TUI0H7Z]8T)Q>ZU^:47"VX:-.K]OII01!:@_"U11L8L?%T'<\ANNN
M3?6XYB7Y</6*59>1G :^;?*D.U2^N @[R)D3E6[H:$@WD>XZ2)TR&_WC9F.L
M4E(VV]KJM7=2-*5(B@T2 8!KV?- +K-"'Y>69[KVVZ6ED??&ET.OF-O6,[U/
M9O_KAVZ:Q+%<O,'WVH<%?<2OU\'VJ<H6=2MYVY5;8(^-^LHPDYO:#!1^8+A"
M8/-8=/<7_<>S=4?3V=%;*JKT* ;99?83-O7_LO<?&X6/#]?']\</Q^AJ-C>L
M-YCK*A;0C77\/E+<#"INMK3Y'W*3UGNSJ+G0-)LX3O#?=["FY8QBIM?KMM$=
M )( 1"]M0GY'7VS]F31>/A\&Q2_AY:W]:+UD5L!X#F;5G8%U<YW$TB:?(7@F
MD^&W-'7G&>2U, WR4^_.@J4R_G]][IM8&1FVTQOMDTD0K 55_W,; *7/L8'(
M*U$]%^00? PJDS@-4_Y 4T2)FGLSN!J/ZWV,H[8XQH=$EJ$R[L(F> LF&?0[
MZRSR<<.NTW<+L',W!46XG9D^&+4Z_6&;LZC(A_N%TT\CWFUY],F!1QID3F>(
M3#9%B=K;AD<]:H1A@6'&(6)K@P$O<+RQ7'0QIUFHE$WKIN97T+!@GU&T2DS=
MPAL<R$UL:N%'$]T!$".Z(PJTG=#0COE$0%I2/8T,[+C(9GLI=1)Y-=R:''.J
M(!OF 92,K;LZ_-8/DA$;5FONV8Y'HV6NA1[\LE!(5CZ,/U(516/U%ZI[6O/(
M]R%4%N0_!J-PI[KI_\/R'8,OV:6GB-7)7'P8F_<8[DKU.#,%'G77SS\F6)TB
M%9C023-E.DFF3#AY>!V_ ,'W8\MUK5GJ)?06D55?_VD(BP@9Z"]B21'\9.6[
MVE;:QDR5/;S-QI;Q(<%D/ S4W02Q?P8Z\NHK @2"[&6JPR=+:9=QK[?WU_@1
MIR'5ING+NV*5"L[4"_RG; =G=M.XG_@WRXSTE?NM\4"BH1DHG3=9&3/9D-'0
MI/M\0+\'UU)_E] =MM$_L.$1])?V<;LMHSM0_P]3L.+>&Z+YY$P&VB0O,$]B
M(9$0@;SPQ45&*MS=?_^\3>I(HF 03,(A(D+6O H$)I6B[\-;5)QN%=FB _R7
M9?_N,R\*[YZ"HZU"!56;F]L-8C5#;U!L?MZUJ=']%#!^W\#9(;"X,YJ%_S(E
M;'N)&NN1W>\/<A $F&('?"4#;'UL&(%+1%V /SR=.@!@]X])< '<./ !_)_*
M';HMY6=4!>Y Q(L(24M=!/HUS:A"&GP+9@F]=&X3E3 C15;\^[$L5@=]@)L"
MSI#C@79VIA;=D0\3@=PI=M>G\H)7QTL'Z_\XF,U'B3F&'Y3(E,< 6;AH3&O=
MTA^QZ^&7=#S!S5B=>382-ESJ,8[:_ATT_.8<KV7,^*GGZ;'.2__0DY_$1^6M
MBUW/R<@Z_R+..IN@,(7OQMHV94&P11Q;4&@ *F:ZZP*8B 'HL"V3*BSC#1%0
M7F_HFHI@K+* [!?L8C_5:(UAEO>(>M#W'ES9;?<H.]R3)\_PMS\?6H])C($*
MX@E_/ N4$^=C'OA&IDYG'J!9P)<;^.H.PLB 01.$517@:V.*04IQFPK!V$_I
M<<M6[!?.#' /3[%#>064GLVQ^291P0^W QE)%^@)/=G6BSL-OSX&/4#8V#0R
MT4V6RLDV-8Z2QG:TP.$(;*'X[^$;=)0\I/ 2*NJ/$@867@,^+N-%\#M:2JB[
MH@KKF"L\-C2H%3Q>V6U'JK)D^V4RJ'T)T'NR[+<8@Y==Q$"I!A=EMGV_QX-_
M&Q^JR]=:+D_<)0^9,_)?K"\_2LY_;LRDEB<YLD2P.!O\39SZ65U\\.=I'OHO
M1\JZ;.OS-9>0$/N!J<Q)0YP-_2')2&B0:-V@IM@4P\Z#]1T'XXSP5_%F7X-F
ML('LX02_L?E=!E9M5>3?.6NG'!F5(&;Y\N,F*?X233Z)=?/T25R @H4E0%&:
M%HLJ>([O:\'PV9'RN/-SX*[19QEO].$O.CP:'HM,F(5%Q>2S[C#%:V)3U;%!
M;51ZWH%>3%L?:MC6'$2S&'4M*2F@\P%_C/6DT(IQD@R6+%21*S\DWABOWYF"
M#Q@""GT F##?VS_;1)W=(&:;Y/%^/-Z4\OI GU")R/D7K%GH6J2'ANHA#_>P
MH<3U\]HHJ1VZ%^H@RW,9,U.N#K?# R#HCN,1>YD=QU(S" O9J/Y>J^/OM6(G
M_(D!SW%<$ HT'L@2PQ"M1+$X;/F5?0&_?!<#9S=DVS]LD]:Y78X+K'O0PH3%
M,#Q3]^'#KCH".*LZ&#W.+T?7-U]72V# 5#7+#2Y8Q5[8SGC04D9'Y\I &O1E
MJ;U,B0R'>;Y8)5H=+[J]/,<V>HYN+\]I]4AZL81>B$U6UA6[Z#?/>$/*R"^K
MD1I'X@"\FO[L$_N7H[MOG_\6'SGRQ^SO=08F4/ 1':[_R1$MV[AZNYN?/U(B
M4:L[FD>T%*0_LC\MRT!&"LGE*!L7K1NGT'A7[*[P''[:&ML$_]["$Y<^ ALO
M^,W)6#UN;<Z_?KG?/&=&Y*-%G<OPU]-)"ZP"MA(HI1!DA)@Y49%0"#):@#-\
ML?B_3O]SJZ*AB"W?UGGD*RS7DGO%\AP]!8%985M&3I?FN@2O S+#-4""Y,/3
M?$[J\>+S]RM:+N/R]N;QZN;Q8<<!ER/EZ%"X#Z&S8:(@D.Z_0338$KQ$,24\
M$HN.U)RW5$)I$-H2?O5@3_*Z*,<R5R[]>B M>>2#0>+0]X^D7XBCVOJ<&E_[
M3]G1<?=@"'N'GT@L1?WXT8ZRC7=*-Q>C*=*']Z$W=]&3!0-7(T]EW<7N7"_>
M;.+I,,#2L9K+NKP8+PUAM>#!-!IPBLCK5!_K]/*[B_M'=+THDU^3-"M^&8+
MQ-ZR%7>R;$O<?5V$XEF%@=E*LX:]I=JNPK 4<1%$9\!9#T):43J>*_LG&Q0A
M&^J2#;JR43+\P";8UU0@_*^#ONB.ZOD%#VG:XX6)C3='9T'LI02YM$S-WPVD
MU]P3QS-<=LGMG/C5I81HX4NT  S.Y?[^29:.D"RU29;.1LGR=[JGKX.Y04\V
M4%$!'QCA>RII#,OQZ!89'EN>BVB/#^*B>]WY78@/OL1'!Y3X'HJ/KA ?M8F/
M[D;Q0;<2;<OPB[#<V99*-"HMA&S@2S9T:1;$]K*AH3&>S?:T'^$1(9[&L1W'
MTG*N9 CQ?"=/X)PQ0<E.>PI)R9>D9$0\IR6G]TXR7 C14*=HP!ME W6JT%?X
MT+*%6.!/+.#]E LB\%NG6-ALJOXT(Y49'[#A9RM?_>'I[ENT\@IUP'XZ++\S
M,"^$$.%.B"C[*4-$B+=.&;(YR/N%3##;__DYIT<<B*E;=D1V"#G!FYSH[*><
M$+'<.N7$YFCN#]TD8&-,")@6D;T?(1]XDP_=_90//2$?:I0/O8WRX98=1+XV
M_6.8+(=?2 :^)$-O/R5#7TB&&B5#?Z-DN/)?"5.!.X'0!X$PVB@0POHN_KG)
M19$7%#U]&SE^&SE_N\6!SS++)2*$"C[7_NZ.VQQM?S?:U6FO3?C34;#"2 [)
ML5C>1IR'?[=6VQZ)7[M!>"I^P88UG(Q?<$F$%!'4;V" *I$?.0Q?R]F_X)2[
M?\8A..;NOUD]Y\Z2+H[1U^N;BYO+ZXOOZ/KFZ^W]CXO'Z]N;Z!GR^A>TMN/.
M0;V>8Q1_%B2R1NE%$6I?0?_H?<;S]BN#K/;P_<K9>["*5V1+@6?\8RP)?X9%
M/8@ODV2<7-4B8H*L6"!B[0M;>U!C[#@XJZSZ&1N8=K][F!(2D2&"#*63X<,U
M;:UE>0XV-;B4O*H$+&-618IMURYJ2B$\HY7W:,.N5.I$K?2HD5Z_N%_:J.$(
M.C#5]K):06ZC54XT6C.:IO4OSM)2W+H@36 /3W23V:AU%GE?."&QRZ[T>A(*
M__GXGA7]8A5'T5JLA;%]&$,!QWRY]JMU7XM^EASSJ)AZU66*F/=NZ\K@ZNO\
M36;153]%NCF%R^FWOWDF09VV='9"9LE=S:N@E8 %1[#X0E3"RE9VY+JA$98[
M;[2P"Q1*4" H4*&' ?65TDALYGYAI/BNI=QR!*TB6A$GY%@Q@;J]15V[&:C;
M"S%]&+S!!>@__#2QI^DNT3X>BME9_:-*!=;"X:UXJ@">\&GC\ZV$3[L+<J<S
MW$+X1&1&D6'N)=,5S>:N-5_=0@WE^8+Q+ASG7=#QH!BAV- 23VP@J+@/5&R8
M)56?, OZWB(<2#0AS9K+!X?TJ#TG7VG&6!GR"P4Q$I IH92!ES%^4;HP6MWP
M&?GB"3M3MJFHTA>T"?@S-ORDD>0V>'*1FZ\)<XO'184#^$O2L]?3T5A*8/GC
M66^51%.GU$&OT^VT!X/X/D:L<=:R-]+/AR]'08<ESVD]83P_I>2_,#7ZW]62
M]A?N);9MVO[M'[27T:+14B>UD]*RYU*K<W3>E:51>_2N<](A(ZKV 30)TL,8
M2+=;LM+JR'5!6E8&4K_]OAL8)Y!JE$E>J$H+AOX?SW'UR5NLGGN86K;;<HD]
M8]T1B9]1X43.,A^XNDL? (<"8I17Y_U8T']YE#WPTO*)A:'4Z<J\2@4Q@":@
M>=C.J^Z*1G.G*[6'0U[17*C;%F;)??OZV[^ZK2]??\(]9BU;>VJY4[@CL35K
M1EJJH<-:MFSB6)ZM$J=UZ3CWP9O6U)T9+4,W"4W";STKSRTZ![IBS=*@J\KR
MPN_H["";J 0L* "7A$SBTJ,NM&OO"TL,IGVB-<L;NQ-OT02:%1DZHUN'*R?_
M]-?65-?@$:<AWKM@C8*',!J<G="KSYD/FN6'/?;#P5!>_) ],TP18XU4V<VB
MV4'T4_@.:#BG+:B?B9':YKU^"57[ #@4D7)>A1_"^7Z!YAOBYI:1@-QA1^H.
MVKS*2#& 1L!9R:OQBX4SJ/S>0!H.!KS"^7#=VE6E?&T^PSO+%IJK<:S>SZNY
M%C0'#L_%VB-)EH5KVJ !<(C>W)'8G=$KMZ5A7^$5OF(+,51,X#83Y.)7$O48
MA9IJ&J/GCJCZ"'BD %@:I?EV#:7>H,<KPXL!- '&H]RAU()@W 6/JLMM=$"X
M4[[6NK/)'.L:(J]S8CK$+X1NL4*%ZN:4/6[XKYP!T"-8RY,6K^_.W;A3W8P[
M>,./M,@_@S31DCL$&:#MR@?;A:FQDIA^EOM.>X]M26[7';HI"RV"N0Z*N7('
M1$MC+EEJ=^IV/XM!2Z-\U?K2]5?/(7;ZS%)XM%QLU&045"BAZA8O,=4TTZ1%
M)_=NX.YRH3^0>G(]>8 QJ\0-0@X7C-W<>WD[@U'I*E*[78^6V@!&X6JV U?3
MFL.DWIB+28]8S&E93I91<XC.9;.C2[W\+J"/@CL#FRX8J5<A$/+NCBC#H=0=
MB6AI@P; (9[C]J8S>EV%XUF1^OT^KWANE M5C#8[.O]F6=J+;AA"3S6-KW,?
M"0Q)GF__KCV0Y)'(.&G0 #C$;NZ,DYVP*RM#:="K.]XG-NZB^L?O'*:;+C:?
M='IBSP^_"=^ID7R=.\&$P>!Z@0(_:I+7SNS*4G_0Y97-Q0 : &6YG3O)I#@H
M=T%E=:5.K^FI)OOE,7VWS"=QSGR/.#UWSD?<R=P;RU3S!OM9BTYIT.:6W\4
M&@'HW'D610.:'CT;@0*K.W])N%PK+M><V-B%&R&#8(<<<!9DL]D\=X+$ @#?
M*?WOZ4QN)S\=WU3-Q>5#:=@6,<$&#8!#..=.L2@>SB-IV.-VV_4@G2Z_ZRD1
M&JO1+)X[M2(@?V$,KDAREUNC5 R@$6#.G5=1/)@[HZ8G5>R9A\4VM8Q%H/!P
M]94X"A,O/'(G;T1.ONP8F>E*@W[=Y9O%P3(NEJOIW)0[G:1(;AHJ=2MA<9*L
MH ?L>)(LF[I?;XO9*;8_=W7RZ=TAD57<Q?9@7[LD&%;G'6A;;-RGK RI03[5
M6.%^PRS9X(-A;B.Z<F?,^%(K5U+!J#N2E%$]NXR5@F4C#P@>%#PHR[E3??+R
M(-@+@VY7 AUZ6#Q86C!@Q2+8Q'6[7Y'2UZK(QY0R$&'>93+O6$_$[SH>ZP9+
M@V!'.YTIMLG4,@#NSO^R@Y[NFVAA6O3#.6A^*:BX#U1L5.R9AQ:FQE+>"9'6
M9&8XI$?M.?D:9:]5T;)FCM]$]>%&]7J4Y?RUG *JW_E$WZF.3E]J=[CM>W68
M V@2AO.7@"H.P_)04KK<8KA1]G:YJLKVB 9PF=&"E9C2Z.#5%2\[T)GY/7>R
MXM5L;EAOA-P3 [M$BP21=FE))G>E44><#&O0 #C$=.Z<Q1(P[=??'0WKSD$2
MB?89U9FQ%@UGM?2%7FN:#,B=>AC@(,+[827NR$?YY$!/:@^XK<LC!M (7.=.
M BP1UWU)'M531EJX:YGU6[C[0=$#3PA>.KK&CA4*UZUYHB!W4MUGS]%-XCB7
MUFRLFXSZEPM47$9!$8J&MYU"DN#2U9TTW"2HU3X _K"NY$Y>*Q[K_R6VI6%G
MN@[S%J\0%Q[>J@:TUBJ#;,H'X(8OJSE/P8]T>#^R-!&1N\#5:F6%@E3>L/:3
MU]O25<";:WCG+G=5 KP[DE)[(".=KL+K6]5YDY7*(@>N\9IM"N?.,HE69"A$
M#/1ZHOQP@P; (99S9YN4@.6Z%9KPWS;H,K^O.7)I8_-#SH\4]1'BA4GN5)9@
M:\3'UR.%URXI+-VZTU=$N1$NEJOI[)0[BV9K=N(UHEIII1$^7%$N*XVH&0]N
ME8 &T2LX23SD3K I**NNKTA=N9X8:\Q*<8.2PP5D[LR8@@#9:TM*30&1#8 \
M0 <RVL!&9+SL2[BHRHR7'2OE*5*?WYPX,8 FP+U39=++9KCSZJ6)S,]XM2?2
M7/9(%!2=W+*C=AM([5'=^2U-0E3M ^ 0TD4GM.P,Z=Z0VRSE _?@1/;*WG!]
ML=DK._*\+/4[W![,%0-H!*"+36'9&= CF5M '[@_II$) <IJ-(%%Z+ FLWSN
M1),O 0066^.1K8>;G'VQ.GUI..*V6)(80",0G3O7HQ1$=Z0AOYG%!^F*K;=Z
M.W#U)5+&XL7(;OW>HJ)C-S.X+_5$TS?!4OO 4KLU?2N2I91.W<W"13XF'_F8
M(@^3G[2W3NZ<F)W+/LD#"9[/8\*;@&(=4.SFSE?9%8JCD32LJ6!T7:F7*SJ"
MRQ9<W Q$*/Q,"O_H_"&V\9?HD%/<PT6''$&^G!-M5-R1%[=%'C+!=F>'>V^.
M:ZF_2^C,F6,S'%_+(6I+?VU-=4TCYFEHS71AE3)<UCLZ_TO[N-V6ST[HU>?!
M?^"VVN@9&QZ1$/;<J67#1+1,#^YG>_  3/"VU&ZSOVL/9RT<G4](=QQ:TYK5
ML?9<QX47-"$TR^V'V48QRG19KYWM,OGH?&TJL1-#V$'6!!&L3NG_OWDF01WP
M]:GKPR;[A:AD-B8VZLCLT[;P4^MV#N+2_3+YJ0OF?:"\^P_*4LU(41=.*H\X
MC$M R^2D[BL.&^4>E5)>)K 2+JW9S#*W,!%ZV4R$7N$F0B^;B="C)D*O/!NA
ME\U&Z -]E($TZ,M2N]]9&P5];)9'9;,S^C+K@#<8P-]1/\UVR& S2 @NGQ-@
MU&=BQ#O">[XIU^BDEEYNB\,7!)O%?/H!4)&3U: !< C?W(9*,?#E]GA7HP(A
M9=HK%W!G2AALP%-T#;Y&*I[K+C:$KFH8L_=SZZHE".X  ]?FI8^ B S(Q?Y=
M,-9ZXHAGDP; (:ISJ["24*T,N[5M%(L#,MDUVSUQL6Z"4TJP;<(S#C+)N-FL
M'W<L+I-""VE_%9#^0E6]F<?ZL7XA$UW5<QXJ& RE;E\HM 8-@$-4QYW\RJ30
MRD)U7Y%&-*[()ZJ%JQ:Z:DMR^PV% 4:SN4VFQ'3T9X(,RSE('7?(6?\?T@1-
MW(&\K+7,0Z2Q$P"749SYI_2^ ]ANB'L[><2O>:0.<F!-X=71^5"2Y>8>"O@H
MF$TP&V6VN&-K62N=E\MLW0BS=:2NTMS6 A\;Z.+RDL6V<OC&R9JD&T%"0,#%
M(V1*N@:FFJS"+8J8!=+6+@D'\0ZK+3;*4Q^LM8NX=RD:ZXP%$]CZ[& _[NQ@
M)B."1=@"C%TQA.7R3H8=61H-.*G17AMV!/\=*O_%'<W+9%<4Q'_];E?J].HI
M:E@7_S4JY,"E@1$YW<ORHHHP.#I-%7C%P;B3"&/-\L8&@6G]A5OQ!X,/AKF%
M_!O$G0?=]FCRA:D5(0V[1^>C[DA21O5X4)7":&MS1'#G(7)G7$GQ;4]K%\2=
MM/PRV"J@E0^+.WUCY<0=6]H;?4<[FIZC/R%0K9K^[+]:VWQ@ T2#8V6QU1"@
M3B5 2[L,/I[[ YG:ZR/IP$@B4:#3L%';)5VOQ3H D9_@ID!4$CE)29EF2BBG
M!!9>_"+'6F]+@*,3SA8I;B!E#^%Q2A!6Z882-M]HZKYIN=1VL^%C8'EXW)/-
M<@1MEV:^NU/B$-8)B9K/;$O*KZ^MT^B2"Q_,8(C.<>J<:EE<X FD&M@!D7'W
M[?/?CMX)8@JJ@)EM'UI)!V#H_=9N>//S1_P=-\YQ;79Q,Z&/0TCQ'[M@[BA3
M[<A#2B(/S>&GK;%-\.\M/''I([#Q@M^<S-RUMDZ_?KG?O$[L ':PS"N_GTY:
MMO42?H/.,)K:5,_\&=3(T8HK%)70^2 %K$$E*@4];7]#47UV@L-!1:BPE+;+
M5_0%N] '80:I'+,"Y?$"TQ4!/'XYHI8V,8S L%N\=^98#=\G4BS<JFX7:P7Z
M*^NKMF#%0=N%9(^QHNB UOUP\&$_Q>S 5R)6S\;G=[;E6N@['L-UUZ8*(G%\
MOG1]0QQ1)=[4&5Y&U<##0OC[+!/-4/!WL_9O 3Y<FZ 1+<_!I@:7DE>5@'9C
M,0\6_9@3.WPW TGI.A_W< U^FMC3=(# ILF%MJHO#2/V:NWRL&G6::6+L]1T
M6ZN-0&V#A<AT:;P>R:VO8U30PFB(J@Y4V)9Q<#^4([*[(=91S9UARO0TZR]'
M_04I=I$/6;SAQ"CUNMV[O!6[$WO[C&T= VU-&@@P/D7&&@PUX(F%,#HCL^BS
M3L&!F0+,V;?)7SV"%4G0#_ATZJ K@)-V=D)FY\$_[V6: ,"> >!!?^6#_%%3
M0(BM&E&;>0N7?W"'Q0HJ 77F=1,@$B J 41"@*9B7Q'83P XW5WF&-<"(!P
MI"T (@ B)(@ R%Y*D-)-IP3HB(^K^WA+&F=,="T6P4%PN*?D3'%-BBB'K(P"
M7LY8UQYX>G5K*^@@;YG.Z7X%![F^,Y AO/GXO%E#;^*=Q7*+Y=[?.R<N=P/"
M1T5U9;TGS\3T2*KZRI$OF^L4>]6/_LN&IXYV2\K./I"4%.OA6KD8+3@ T6VU
MY2WJ(3$B?[6M&4UBHX_YI^Y.+ST'@$#L:U,U/#JN"\<A\$?+6=3A7%8Z4CNI
M-MH! 4M@.AW3_1A,MY>8;G.%Z79?Z@T2*I0<$+ $IM,Q/8B7TS*/<EKIC"1Y
MD'!0YH" )3"=CNEAO)R6>933BB)+_6%"*]GZ@=6$D%M!+L6EY;!#0O9AN1:%
ME,:J1R"4TG9^."K <Z%8NIU\LRR-G1,E]K.N$N?!,K1\U2SZ4E>I3T:4#!'!
M1?O'1:-V ;Y2P5S4ZTJR/!)<)+BH,5PD%^"=%<Q%LC*0%,%&6X^S[N<?/"\I
M!7B%1?.2+$MR4KNIAF&D 9M//"1D?+,MQT%SVYKH;ODN9B5"IS:)$7-:*TT
M= IP[!CY[ACU\MF@?:FO5!V5CUDG?F!Q&-CK%N .[8P]1>HFE<04V-M?["5L
MQ6_E1.R*/6KIC'I"\!T<^!+VS+>RNG<'7UOJ\2GY&K"_PH/5'&0MFT^(O,Z)
MZ1!')"Z+.XL[BSN+.S?DS@V(#Y72!F_$UN,'MG\G3(&QNO)@PJ1KL#W:U-G^
MT3PD$8WBDHBVC18]$,.@.4*FMJ#_E6^_Y,L5DJ5V5Z2_\?YH+N ;E\6R;<"I
M8/C*?6G4J=H+:RB&#AN^2CLN?63;F%7!\.VVI9XBI"_OC^8"OG%Y&]M&O0J&
M;Z<GR3*WTK<!<; 2O8-[XA!LJU/F'&CDF1C6G)[8%RX"UUP>EU&R_1E'G_3
MYE^6A,_-Z%T:[9;:_81>3US2\C ?S06"XU(BMC_16"B":?-4J2].XW+_:"X
M')=7L?WQQ:(!K'0DI2L+!'/^:"X0')>=L?UAQ:(1+ ^D?H?;T^.'O9?PC9B$
M=C6CS@+69KJI.R[='7\69Q8/,[==:<=EV6R=VNK#"F3(Q0JH=K/DNO)^I+<+
M3CH,3HJKA[%UHFX)G"0K4D^ISZ04K%3W$C6/E1)VT+?+.RZ!E92!-*S\#(9@
M)7Z6J'FLE+";OUT6=1FL1(\S[<=9X";L0*VDE'?Z7"1GQP[JT7+!0;6VR]IN
MSN&+@AH95'=&(_. 4X20G)"3L963N4CD#Z2.DS\5HVIC.-L2[O.9H\.$?4(N
MQU8>83&P!W4CMZLV7 7L#Q/V"<D-6WEO!<"^>W0^DJ7>J.J$!@'[PX1]0D;$
M5IY6,; ?C*3.L,FP;\ N7?WNT]'YM:E:,X(FMC4+/2;+W!=/B1_ID,[V"7DD
M^7P;GZ+?+2>?F2?WP<RK.M%\CQ594S"8D F2S]'8%8-=J=.KVL,6&*P=@PF)
M!/FL_ATQJ+2E3E^4C#DX#"9LP><SP7?$8$>6Y(&H'%-G#MS1^:T[)3;2?3OY
M@P&T_"@ADQS,\1BQ';HF(8HXF\] =6.9UJJDV"E'IR-RW00;-8>-BJ@14 (;
M#?KUL5&CSB\(SMAEZ!]26$,IHOY \:R!'%@_>$7/9]1WE#O_DG\4O+2?O)3&
M2D740BC#6).&>Y)/+?99MMEG&1. " F]21>_[DU66D/B.TH191.689VP0Z-N
M>L!:MXL-M,^,SOYUCY3*5Z^NC8'+=!/;;]<NF3D@4.A ;(L56KF&(=G$R5EB
MN%_#B5\1JZP=RT444. .R[124-7U%P26:\=R$;44>,.RTI;D8=4'% 26:\=R
M$545>,-R1Y%&HZI#8V(O:G4OZLZVGG6'P@WH5K$7(0(<7 8XBBB^L) A04CC
M,S%)WG8G':FC-#$Z*,+MA\I!111=*)*#%*DG[T=L4'#087!0$;46BM5!O;XB
M.$AP4&,XJ(@2"T5R4%_JMO?#BA/[4YGVIVZ(&_B3>[(?M?F$7F?^BC3+&QMD
M'45_J3_ E'VP*6*E4T31!$#&KL<Y%&DDUWQR/&G]]CE<*E@ 6*"( @J%L$"_
M777T5+" 8 '* D444RB !6BU+L$"@@7J8($B"BOLS@)*7^J-:JX<M1L+E+[7
MEL 1XN/J/A8>\Y8>,YH36*0IMLFI: PO[BSN+.XL[MR0.S<A>6C%,I.'7.B_
MV$%]QHZNBOCQ_KA-<8F,F^+'=\1^H+;0NOMTA6U3-Y^<\'L&EH4;U<[H1EW?
M?#TZ;Q]W12!!<$0='!&7;K<IG"PX0G#$_G)$7/K<INAR)1Q1>1MBP1&"(RA'
MQ*7#;0HV5\ 1\G&[T1S1@+AD<URU+[KAN403SMK^B)VX',*BG+4 +L(X%3S1
M))[HQB7 %>6N"9X0/-%$GHC+B"O*8=N1)X3+)GBB%IZ(2Y$KRF7;D2=&51>0
M$ E#XF.1,%1\PA 3!@[R'*(AUP)Y,YN#7*"EQ$4>D;BSN+.XL[AS8^_<A#RB
M0HH0!0:];FK$K#SSAX_3Z]L_NLP#Z2NC2?-QMNXR%^O=_)/0L1/M C"+G\B-
M-QL3^W;B&S>WGNNXV*0CVV&C2AE(@TX/_M97PZ%1Z#IT8&_=NJXV8/>E?K\M
M=4=5US=M*+H.'=A;]\.K46+WVVVI/ZRZ<6A#T77HP-ZZR5Z-$GL@#Z5^CUM3
MI '!MS(=C\KR6 2_[\#O6[?,VX;? PB\8_O\SD>W*PT'56]%-A1?AP[MK=O8
MU0AM4&;@?@S[]55V:Q2^#AS:O:W;T-4LM66IVQ<.".^/Y@+:6[>%JU5J#SL#
M:=3A-F@D<CSV_^,&N)D\Y'B<C<\OK=G<)E-B.OHS04'?OP\TR\.:T%X='\].
MQN<BOZ.2.P,YPIN/$Z4EGT-OXIW%<HOEWM\[)RYW W(_ZM>-L=';55TIZH_O
M65I]+Z[LYK;UQU<PXIM3-\2]G3SBUWQU:+O2<%1U!&R']17G3/:((>)RL+:M
M1EXX0RC2:-#HJK2"(1K+$ D5QK:J35XX0\C2J/+<0\$0@B$H0R04&-NJ4GG1
M#*%T0$,TNH%+U$6#UV-+>_._@C<8[LG>G)UH^K/_:BTQ)>K"! "BS\L^/PFQ
MCR7D$%N?I/'7W!_ U%X?06?N1IMAG2+5LVUPIBZI:[E8+J#:$Z&>F4D^H9 0
M[3:08LHV*^ =O4?$'UVN9+R_NL0M.N%D<1C)@AFSW125&$:P7;%X[\RQ&KY?
M R9;CQ5_E"UL<>/UH16!&0T+++#XGE/8@-8# >!.?XI)DHI9;I70SMY%3N!Q
M2A!6Z1%%;+[!*@*@7+@/MN%CD%?PN"<;&VB.;3^L/24.H7*+-67#+M'01#>Q
MJ>IPD>/"!S,8HG.\[MM'V#+*E2M,63O:0"@@U< .",.[;Y__%H^F0 K9/H_%
M*X@0%RLWO/GY(P6?:01>FUW<3'S =8(%#J5;5+KL*$R41&$RAY^VQC;!O[?P
MQ*6/P,8+?G,RBYFU=?KUR_WF=6)("$-GT=]/)RW;>ED$U<XPFMI4>?[9M=2C
ME;C8NVC7UI "[F'R"?CBDFIR /[9"5X@?DF%I;I9OJ(OV(4^"'E32T+REBUY
MS\;G=[;E6N@['L-U8+T=QVT8KA@TC9OA9513/"ST V49EC4QM0P F/._Z.H/
M3W??]F\!/ER;H#0MS\&F!I>25Y6 ><?._B,\ ]GH.K'[Q(U0F,)V3;<F0B&U
MK2P-=!E85DS!Q O7W$HL1BXO-&E4GG*:_1$"IMOY:XF[@&CIVR8^!%8"J&;^
M<M1?4&@7>9(G])#4('G)57]-WA)<MRN7CV=/7]D"#'8 (_,+IA>PUT+@G9%9
M]%FGX$-,@6/8M\E?75JSF66"AK#4W\].R.P\^*>T!)HL]*T61$IU((H.BQ-L
M7( TI+$F;!P,Y:M\2,&0"AX\^&LZ5X=C8@0M=?8E9\@(1L[.R*KJS3R#&?RW
M+GPJ^+DQ_-SGGY\;D)[,CX$J$+E7&D:0<Z_(*0P&1O,[K&NM:_-@S 1!=D;V
M>^)BW:0%'03=#XGN*RDK!T-\H;J%;\"7;U"'.%H+7LOSU]38-4=2RS_B7;JX
MRK%  D--P= %V^X5&!(8VL%ZPG/=K6"/1(!HCT$4]JT1*!(HRH^B[Y8C$"00
MM ."'JW&J++*7,LM_,/LH-_ZRGZM3]^_<0[$. ]RG#OCLP$51U9#6G57'V$Z
MYS,VL*D2A%WT&S8];+\A&=:DK<@;%4US#M%FAV#9YV%3S[D.U@Y^Z_[A5EEI
M=>1_+TX$^.G_=&_ ,ND!@8M7W6GY2:$L)_0'H147-Y5IC/R@P$JZ _A;?QT1
MGC!U&,#MEP+<F%/<[,+@)(Q_OWR'MZON,RXP.J@;HX/<&%TF7-,$C&LSB"Q6
MB==A5QIVJRYV*T!;.VB'N4$;)HV$$<P*T=KI*]*H777U)('62M#Z(0VNH_PR
M=ID+SU+A8\JU5(7@+OP$U@]> 92EKE)UTY.81?_( [P.PI0=MI,A7(GP['>[
M4J?'I0_5A*2AE8FPBJI\!5WB!KARQK@UFD=.>;+3[P[2'<<C&H(/R"NQ5=UA
ME32L.46&@\!K1Q85FA(*2JH'/WO1W>F4&!I%'RVSCJPQK#UFOQ*AG4K%2EQS
MC=6:?IT2HCSLTFL&GB^>#6;@';%U*^C"P?[]C!VBT<> IF7 R!?\Z0ZE4:_J
M:FC"XJL=UDK9L$Y2M.]!_0]L>(1]=^O+Q:M 5&I)>OB_Q+8T[$S757!+X/C0
M/)=A0E7N[8"\:Z"H"%!G\VN4D?!J]@W?:?".J[&]-;QSAY2$L!9@+A#,F^MC
M9Y'5!0:<!+[W"=^5&-6IQDA<O>OW !<&1:I!T81\H+V.5M&@TZ_>V$%8!0'L
M,,M81)TJU90#_J).%TLP./EB3<-^1QJ-1+#IX- \Y"S8% OEK9JJ" P?FN\R
MXCC.M#N>^WUIT!9I2H>&ZE&;Q_!2%C@+KYN7A]2.X4)V:"N(*@E8-PG6=1O-
MHVP[M+4;#2,>D2D2GJH+(3&,M<8T'06ID7P41%[IZWUI@<V5V$@^;]Y*K4XF
ME$.3J)RB' K9%MXRHG*A_<=S7-;;Z-%*\&19J'"\GIIV3WQ50QZ(_:RKQ-="
M]T2UGDQV%Z:0A$W$.^QK-_6+V4#.'X2IBP72MO+.>U*?AZ,._,#T,'@AVUYS
M":$;H0<$]FO&?B';HP6%? 0['#H[U.X-9-M?Y1/&S31M1(Y2=0&F>S+W;'4*
ML&,]==4@9<EOHRAB2Q7*F4+VP/-E)2U!H%V8(%Q<W8Y+4DI*3(I3EC0G:9D'
M*=3F@<&YTRYD\SM/6M)&,.<Q_ 24#]8AZK2+V0/?,3M)P%K NEA8%W)*.7=Z
MDL"SP'.Q>"[FL'*!J4H"XGL&\=J-ZFP[TP*:(F^IYK#2#7&1SJ2EB"*)#"5!
MY8+U0"';TUL&5X"E??N']NT1^V:\8[1V<[R8;>3\41.!5X'7;?!:R#G:/.&0
M3$!-+RTM#61%(/;0$%O,J=EB AY"VC8*NW5;L'*V[<&#%9PB!::Z6,69?LXD
M'SM@M1!]R&#M2?72VDHNT;2)9QORD R]Z@J:"5 L?(Z>R*T-635!&FY7K9*'
M9.A$*4@C2-.<51.DX7;5#D77-&ZG3QEP;CW[ XRSGK]:-H%E0JIGV\14WY!K
M8],Q_"H%>''N06P#BFU 0>6"@RB%9#QMN0V8%"2D,9A %EP&HN"12@)_V!>F
M]KB4"\OC4#?$O9T\XE<1,>0=['5'N^5"JG+LL)\H@"^ 7POP"ZG+D6=C4B!>
M(+Z.5@\=N9#\IH)V-JOE@K3MJF5^;5\:=CG8MSJ<5E5U=S_IR-G2J024BX!R
MXW9?&QP_HIGBGFD36*S_$@T]@97BH ]T\Y4X'VEO7]U\)D'M#'B-'*)Z-MCP
M1/3J%2$E0>6BG8W2JU!LH99^+L3"KY:A@=?R#80#U56WYL-""ES8N@-?1<\N
M"4^C*7"OV[=6"JE244)024!?0+]DZ!=2U:+(L)+ O,!\R9@OI.1%R7&ELMA@
M4[N)@^ &-,<:7=.%JRK/7RMZ\MBR-6)''XP<R] U%D-H2XC^^<B1GY!YP&D,
MEVV'6C!**801)1#J/%9P&7.:H,$G";*!;HNQ%"N^MAL>RU%,"7:%(T^)>/&T
ME ([ CL".PW SD!@1V!'8$=@1V!GEZ5L3F!L?[W^M&05)=LN8KK;'^/Q%Y-Q
MHDBC?K<Q3GSC$E.X<M9!ZHW//V,#FRI!V$4_L*U.44>&)0$8GIV,TX_W-U?0
M= !/FN6-#=(429,\XA1)TUG;P-5+;)41^8'?#^/6<QT7FS3TF-0:(U$BT?X8
MY\I Z@]'TJ!;=4PQX]+O\Y;5+H#\R[YPCUP*]R05'9Y:!@S9\>^7*_JN# 6C
M[!.C5+ A7 RC*+D99=>^'[LS3;?7EX9#H6($Y]3!.9W<G).[M<CN+-/I]Z6^
MW!$L(UBFI,&FA4\ZW?S:IL#V)3NST3+D(K>E]HB[Q(EDZNS!P3;AWP C]9(9
MJ1(],I0[4K<C-UF/-"%E*!)R#!/\8$+A!.'E2B R4Y+/2D;/(J&']<9EL1^D
M.XY'-'I C;P26]4=0OOG6G-*7P=A$[ZB EA")G'I-\'/7G1W.B6&1C&$7/R*
MK#&L##M96<&!MJ35J3#S,M>CBQ<X":-)$R8)A]*[RTV-?JO3+J5![S4#V_N.
MO.S?S^L]P_,%(X<]J2,/*A95#<7CH;-"PF'TXE@A226_9P36J(Q]=^O+WJM
M'&N\GP=I* !K?'3Q'ES":%*]LX1&(=N!?]>P8!&,D,UW&U9MOB;0I%R?3+#$
M#NH@(=UC.X[('>X3.N&0'\T# W03CI%OJ1(*C-T)GCCD1U?F(Z392=V$ ^9K
M3"%LG4VV3L.2_DJ,P#&*M\8TWL&:]80!#T1>Z>L*>@T+B;!)2]9;0:JAY#D(
M9*2HBH1CXJ7&DY:%#)U'*\$=9_'5\7I\]9[ XQW=)0_$?M95XNND>Z):3R:[
M"U-/PJS:MT=SX6HDE$&O+/I4%]NDI[A)HRXGIAOO(#YT_DFHIEY^K$KHFT:"
M]M#YI9!=[X)"6X*%&HGC0_=NLNV6\PG]YII=(G$M#)O=D[EGJU, AD,ST=0@
MCXTZRB)B5KOD2(VA%Y)KD"_G;(D:[<($>>'J=EP*6KYD,[DKM=MM/D2'2"S@
M5G,6DEB0)\]L(_CSV(O+?29A./+^:"Y2S7K%Y!7LF&JV&R^D5U/MCOC@!*$#
M^&6";'D$9667E8E^J=WGQ'T2^.<U -=+J%E?7VZ9L(T._-%<N,:];#D#-4KX
M+I7PBLRCERM2RL+8&&T_J#/Y)T)AM?.[2!YKV*-Y"!+U"MG1WS)(!&)CV3I7
M;!ONVZ.Y,/R+V7G/'_P1&-_K1W.!\4(.DN>)[60"=WKT1I%&<D_ G/-'<P'S
M8HZ,%Q/#$6)]KQ_-A4F>;=_VL"6TR$\*8S!G^CD3:.Q,W[)E7AB6T=-K].\^
M/3EY=A7TL*GKT?V#G/5A/EK0^G >/3C(61_FHP6M#^?1@M:'\^BFZ&NQCWSJ
M=P _.O]JV01F@53/MHFIOB'7QJ9C^/5)\.+TCMAE3GJTV&7FFCP'@8SDD%:_
MD#2\+7>9D\*\-"(6R)O+0-P\4FGC#_O"U!Z7LF=Y<'!3]TP1\VWJHWG8X^@7
M4L-GA^UJP2P-0NRA,TLA57SR['L++FD05 ^=2PK)["MHV[Q:QDG-*E>D=H>3
MK'+>87SH7DNV'$*!?+&A7V@PC)ZJ\$R;P%S^2S3T!&:*@SX8 !CB?*0]LW3S
MF03E;. U<HCJV6#X$]$#BP-Y(N)CS7HT%YJF]$HU6VBFGPO1\ZMET(E\ P%$
MU=6M^;"0-!>V[L!7T8-^PIW9UT=SX<X44LVFA B98!?Q:/[895!(\9LB8V2"
M3\2C.2R0,RBD0$[)8;*R>"=;7Q]19JHZ+IJ_1AY.WZRU(W>GU.&W#%U;[^1>
MN[.3?^BI_)DM=4#P546T:EPEE"#J9I!)&&&+QO%6(G8[/(5]\(QM'=.8CTFQ
M8"R>G1X"C!G@2E2PY9_SN8P]WE/VT9X24R;7("?/7^,0M\58BA5LVPVO3X>7
M$OL+1YX2 .1I*05V!'8$=AJ G8' CL".P([ CL#.+DM9B']53:P@V]QKBP>L
M>#-;#3@M")!M?S0]"!#C_^_BQ],N',-1OV(7/B/RWU%A#U)NZG?5 :/C\\_8
MP*9*$';1;YY)4 >6G$+P[&2<7FJCN3*F RC3+&]LD*8(F>01ITF9M2UFO<0F
M09$?^)V ;CW7<;%)XW/YF@(I VG0IT7Q._6*I*2ESR:3&LHP.P#R+WO"/<-V
M*=R35'=\:ADP9,>_7R[]K0P%H^P3HQ2_G5P2H\BY&6779D2[,TT75$QO-!"<
M(SBG!LY1<G-.[@Y&N[,,>*]2MR]81K!,68--RY\8=O)KFP+;'NW,1LNTB:$D
M5UZ7= ?BE)NUU'A&:HQ[TTWFHTK4R+ C2Z-!H]5(-. (K\>6]N9_!6\PW).]
M.3O1]&?_U=I1NH":66<C(?:QA!QBZY,TUIG[CPN?"ZM(1Q/,G85A5&(80?;4
MXKTSQ^KBO8$=H--$-Q_I3X_6B=!N_S5F<;/3924AB"9L 5;]]2LJ;AM.X=O7
MW_[5;7WY^A/N,6O9VE/+G<(=B:V!N&^IA@Y#:-G$L3Q;)>"Z.\Y]\*8U=6=&
MRP KZQJ42NM9>6[AP%^AHRT\&AS!5ZF[@/3FL)Y ;M __05IHT)+A44A=L%2
M:X&=OVZ1GI<0(E\;Q:?EX]G35T+B040\,K]@>@$7+B+A*=M_*5_YP1[$I&*P
M/\C^B4;/2Z=G-6!1J@=+RC9)U1A8!BOVCL)5W+Q@R.3<MR]^M@":\"'CLIXA
M&#*6(9?^'&(.G>!+;OARVQS02OB2F>O"P!3(;1QR!;D$N80!L$Y;NFG8NC;W
M3NT+\C+RAGM<@K[[2=^5_9>]([)0J<)V;Z;M7H=XRG$"@A,IYJ>[EB:^=CL:
M(K#"%58N9B"P7($5@94,UI&?"RG (L"R&2QA&J! BT#+9K30BD "*0(IFY'R
M:'&L@@IU":-3RN!Y;89OYBOZE3RE.>,8B'%P.8X<^,C(H1GKJ!W""6QL>MA^
M0S([@]U.%+K%YUI7?/,*TJ33TY][[].?Y5%+5EH=N0%GH_O28-B7NKV$BHOE
M)\S7B9W]!F:_%&"6>.PX(85?8##WS2LXC)6.P4%N#-9_HE?I#Z6V$(S[!\IA
M;E#6>5A6Z4H#11%H;"(:4\^AQA37R2HC^3R'.I#:<D()D2J ^G'O,%JW*3F*
MJ6 30K1\:'6/SGO#GC08);1HK%KXE18M+&K(S:[E3L_ .<R[1;KC>$2CC1W)
M*[%5W2'(FB!K3FGO(/![D47%GH1,XM)O@I^]Z.YT2@R-X@NY^!598UASUC#4
M$4&04@1$7*^8=JLM!V4HX66GA'@(N_2:@23:A,*/C;!_/V.':/0QH!,9 '*&
M23I23TDHK2!LK^;"-JZ%2J&P35*)[T'[#VQXA'UWZ\NWJT#D:07U]Q(X;:Z/
M,.H4 =1=0RI%@#:;!S%JU^CH[I__4'?$9=0M KZY@R]"V JP;@'67B&RML#0
MC,!OD_!;B5&;:BST,P%8*/PUA<]CCLF^Q'489%ICZHT#-I?N."*O]#4189G\
MJBPYZ;(5>[1."'0>J9@BS^-ZO)0=I;C0_N,Y+KV;\V@E.(XLPC9>C[#=$WB\
MH[OD@=C/NDI\Q7%/5.O)9'=A.D38*77?O'8[>U1S3*,NB*=O\TOM3D*?$H'U
MIF*]VV[7%0 1<EQ@NV1L%[+W5U"\1,!]W^%>LS7>;6?;,^03IDTQ/42*37FA
MF'LR]VQU"L!R:,Z,&F3<^%6G112F^(!LMUW([FV^[)@EM;4+$^2$J]MQR3+Y
MTF+DOBQU^S6FY>W?5FWMZJV0K=H\*3$;D9K' %ON, A+K)&.1ZI<+6:G=L>L
MF-UPF]Y(6^K+"7VTA71M)F2S[<V6E0E3(E9'4J]?XUDY@=7"+8$!1W$=82$T
M$<+U>U[9MDYKUO*R) ]K/%P@TE]*C[G<$!?I3-B)$(M(=#EL*B9+:[F07=(M
M8P_ FKX90FL9BNV=NF]>M]4K%[.;F3^F(/ H\!C%8R%'%/,$##(!,=VP[4BC
M85= <M\@6<QAQ&(" T)<<H7-VDW(;-M7AR3Y1"Y%>7[]F7[.A!<[T[*07@M7
M7Q<]J-9OGE+[MZ"1 TW"^^M[U/12+'V#ESZE\K98>K'T8NG%TN^!K.=^!TD9
M<&YI^@.,LS2_6C:!Y4&J9]O$5-^0:V/3,?Q#U'B13BZVE\3VTF%3,24V4$A"
MRY;;2TFQ+1I:"'CZ,F#I1\K1_K O3.UQR=_+TR(WQ+V=/.)7$>BJ^^:U!V$+
M*0JPPSZ5 +8 =BG +J0L0)X-+X%H@>A2LA"50O):"MHPJQ;E:57=EYFWBC0:
M[MTI,C3'&FW,%>U*62X?9&R#6;^9GGF@J5R5+5-'<$,YI-DN:UCL+N9KAA"S
MJ=B@#<7".C@7*X^V&Q8+I:8$A\(1QT2(>%@Z@0V!#8&-&K Q$-@0V!#8$-@X
M+&SP'R[:/S<YS4O.MNF5[B7'.,CY75W_Q&N[755Z;$9D%Y-%6VEN U=.+4QJ
M?/X9&]A4"<(N^H%M=8HZ,BP%H.SL9!R?"]L\<=$! &F6-S8([_(B>:1I B.F
M.W)9%<HB/_#+D-UZKN-BDX9-<S;JZTO][E#J*35)EZ0EWZ?MEEV ]Y>F<T=,
ML^82:Z(5T,1^(!BA28Q0P69E(8S0B6D)75'!M0*8H@\J8B!4A.",,CA#SLT9
MN>NZ[<X2'64DR1VA+ 1+Y!UDVEY]1\FO+0HL(+<SFT0:UDFCT9"73?IDHC2P
M+.(ANQ>=3C*?E(_O[M%Y;SB0!MVJLD\*4@,B!Z74'!36'H"%9Y#.&H(BUK?1
M[_M)6PA8?BM0A$WXBLIH"9G$I=\$/WO1W>F4&!K%(7+Q*[+&L.8L><II:%2P
M_FA?NB!)J(/178;]^ZU.NY26 ^^[QOK!/?;OY_6&)OGB?*.^) ]K+(W=5"N4
M=]@F5'0O#K:BQ_8^X+3N0RJ=A#+NV^%TUT!8N>VY>T?GW7:-6?D"NN5 -R$A
M8#OHYHY4"3DKP+H%6!-.N6XI9PL,(0G\-@F_M=NS"8=9U_ K=#WGF5;[$LUA
M<&FQIJ*L9&'HA"/R2E^+[@2B?,R!4S%9EG<3SIN6&IL0_:SW'=9UF]C=A +S
ME84R..V%W>_4V,U.8+T<K"=4KB\_]B'DN,!VR=@N9,>OH%")@/N^P[UV:SS;
M3B&?,&V*Z2$2:\H+Q2P;BCHT4T8-\FRH8RBB,*648>L6LFF;+R=F8_M8/T4F
M7S),9RC)O1J[S30PR90'K*9!M9!-VCQY,*+'=L.@6GMURVXQ>[0[YL*4V)^[
M,U2$;-TGP&;;E"TK Z9,I$JR7*/K(+!:M!W02Z@<7%_^B[ /&@;AVMVN7K9]
MT[HE9Z\MURXY1>I+>?&6&^*FE= 5?"Z27 Z&BBG"NI =TBT##Z*'-U<8K-WH
M+68G,W] 0>!1X#&*QT(.)>:)%Q30B%Z1^NVJJKH(2%8&R6+.'Q83%Q#BDBML
MUFY"9MN[.B3))_(HRO/KS_1S)KS8>9;WW7+T^++#.TQIB9BFE<=?"@C1EETL
M/7^K4^K-!V+IQ=+SN#IBZ?=SZ6N1]=SO("D#SBU-?X!QEF;0#Q2I04-0Y"Y[
M@"*\2"47VTM[N[W$N<2IK*%55,*E1 +ZA62O;+F95'Y'WU='/S5U Q;5]@@L
MP*800ZF$;;Q@J3N4VB_D6/\.NTW5MJ 6<=B# 78A!_OS;%L)1 M$EX+H0I)3
M"MKUJA;DZ<F+_1H/?Y79"6".-=H*+MJ[L>0G'E)KT'ZV/!O!!@620^P*5K,K
M>!F[&=B@C<"]:&7=;W8K:X$-@0V!C1JP,1#8$-@0V!#8."QL\!\@.BC_>)!M
M^RK=/XYQC7=R<F5%&@VJ.JF:$=D-+.C.E5,+DQJ??\8&-E6"L(M^\TR".K"X
M%&1G)^/X%-;F28ODEIB\B8M<S3L'"8V?RR@J%OF!7SGLUG,=%YLT7)JOB)C2
MEP;MOM3K5=553_2 W@IX36]M.TAH 5U2';/=.Z(KHAEZHQB!JV;H:8R0T..Y
M@B)I13"%(BF=FNQ/P1E[SAG=W)R1NQK;[BS1 9^EK_0$2PB6R#G(M.I9@UY^
M;5%@V;>=V619XFTD]3O<;-0G$Z6!Q0P/VKWH)_-))6J@WY8EI5M5]<V"U( ?
MFCMQQY;V1M]AN,,Y^A-"9R>:_NR_6L3&_'O!;;*/7$+L8PDYQ-8G[^:Q',S<
M?];47G]89^["N%_#&9\&IV_<2QHY7*P#T.&)T*";29:!]G8;UGA**&#]U#$4
M"3<NER@^'+E$'3I)6H=%\DG &W25"UN;3^\6AU$GF#$+[JC$,((4N<5[9X[5
M\/T:XMAZK"3+L(4M;KQTE#!,!B;V&M[8P2L4PP)L0.MQ7M>:KX9D$Y=;A3D0
MN\@)/$X)PBHM)(#--UA% )0+]\$V? S2!A[W9&,#S;'MTIX-H%0=0J4."XI3
M/8LFNHE-58>+G% W.\?+\&VP*HSM_-4Z62[7"O_5CC;@?Z0:V 'Q=O?M\]_B
MT12(%]OGL:0447^F*S>\^?DC!9]I!%Z;7=Q,?,!U@P4.!5E4NNPH3)1$83*'
MG[;&-L&_M_#$I8_ Q@M^<S*+F;5U^O7+_>9U8D@X"L$5^?UTTK*MEZ,%"V(T
MM:D6_#.HO,5MXS<RMH84< ^33\ 7EU0/ _#/3O "\4LJ+#7+\A5]P2[T0;A1
M ]4B>3.*VY5!UBM[M]W5ROB89&%>U(.XT@IGX_,[VW(M]!V/X3KPG(Y7-^7>
M276Q]@6N_654ORX\7M8TZ1([4_35L%X<09#J"/+AV@33Q_(<;&K.1['R%:[\
M3Q-[F@Z,L&G9^;4KA8N7;G2'FGQ;9R\P^< !8798]=Y?8'S4>:!E(S^'T=_N
M[CF469\5E^\'JP&D,W\YZB_(5*;LB FYA8/K_K5.>9:2JIGRU8/^BG[ 9U,'
M70&4M2"?D_V3D"M5.E%K/\M5!/3CCEL6!T*N^6'+'-XFLDV855@EN^R8&BVX
MJA"N4AK"5;PRE=)6Y&8PC$#=7J&NW0S4E2:F,TC7;4[5;+JB7<UC2AE(:8<L
M(C0H,ER]_9&+K))@\U&+VSFQL4OW]^@>_;/NZL2ISW6HY5'EQ310!A"7,E$@
M;/BT<>[C?8**_%&Q85Y 7:(MIC1*&5T/L\<T2W]47*Y!4AZ;O+YIOF4B6YZQ
MI*2K#>-J+\FMMAR<+94K:I+2E_KEG'/)LUZ5 4=@-!-&$_J>R=4V\E'Z4F]4
MRHF373%:^\'F!BNF9<TW![D6L@D@3=4-@LR%QJ*?TW<JW>6?V]:SKA$-C=^0
M%6._GPKCO<EFWR$]:L_)URAS/2PQRK+:%Z&_F(#@!A&WLK'.6D@<G7\A<Q!K
M>M ?PM00GEDPR?^R#ZHRQY,F6)T!E&L 95M""8-*LX;BVAIN:[%'(0&O#1(4
M0[V((".?D=26Y)H,^68"K/8!<(CP80'V?FD(EWO2L%?**=LBZ-LH5Z!,I<=.
MT[7&V"$:Z\A)3,=7@.25OJXL#"6D0E%2852 WF,UBCY34%Q&,)%/#K2E7K^>
M<$ S(57[ /C#]"BALM]6FJY 3/>E_D#A%=+"GUOX<Q-BVZ#77/Q*-XR%(FL6
MT\<U^MK>@?,QX,>T'_'KE6_6?"8FF>AN+N[ORJ54#=A38-4^  Z1G=#I:TO'
MK7AD]Z1^CUM33;AL@5Z+NN;T5"7\[G?BGS]RB.K907Z44'?-$@IQS=*V57<7
MJFK[$9P(1FXG7W1'!49QG0M3N[/)3/=FSK7Y3((-O=WJ0RG"NVO2 #A$?D)?
MLZW481W(EQ5N#4'A! ;*\I[ 7/X+3N 3UD%;F@@_8]V@RK+E8/J/T)A<RXVT
M6HNCN(2G[3W$L?NP ,%%B(ZOEOT ^ CA\PW0DS]K3^9JIZ^(2HD"Y%4IQWXA
MOF(1&$]HW+S4AZ5T<.;.=0PK-WS[^MN_NJTO7W_"/68M6WMJN5.X([$U\,=;
MJJ&#&FK9Q+$\6R5.Z])Q[H,WK:D[,UJ&;I)KE\Q:S\IS"P>5PANM:[]BW4;/
MV/!853&*6G@07,!*[ND:2P(4F31\BJ!D/3N4.T7HV<^> X!WG$MK-M9-AH3+
M!4(NHP"YL&T,GS(#_7)*7UY3JQZL^-M)PD^^ZWBL&[K[)N]FT0^D0;_#DQ03
MNIHW1DGCDR)T=<U\DJ#D&Z_;]]_3937CA7)ME,P ^[Z(-%5&^AO+I"<O_/V@
M8#-HU_@6M_E[8@#<@#LU0E-$BFJAZ#X?]DII9K&C@=>HS<T5?;6BBEJC>0GG
M'[<XK=;I,UWHFT,.HB'?Y>$SQR&NPTYV&($=) ZB%?UP<1!-D"_G1(4E'TBO
M"]7?LZ2G;(G^3$.UPJYOF.G3:\?E+&]KV(.Y8Q/LD"_$_Q\<_  ;]PMHY#M_
MUI&442F=@T6DZR#0'9><NZUA7QJZNP!NKO+SFVCEEZGA: J.Z5JV2+O@E/?3
M6#\N>WEWQ1:!Q(Y1*VD@3E8W:0 \JK>X9-S=U=N.&#\?MKE*M=U.J^V_WW9G
MDSG6M?#HM!]JLL2V#*\2($T %%'O[[T "! 2GMT)XM@7IM_P^8(%*+>7#-T5
M[3>4VSP)"<ZA5_L >-1^1102K K\-+]6:O>'/&%>N'OK[IY?'U"<PVZD.(A+
M:RHDDFE[D?.KQ+G#;WE#/DL%V)7:,E=I"R*PV2BPQ^7C%!+8+ /LLM3I"I>0
M8\VWV,J;^^06VH]'@9 F#^(RF(K;QMM!"ISW0--QQ?R<@ZOV 7"([KAB<<5M
MX^V";G#JAESMX8E:)/'ZC=HUT82ZPXYZTK9]BR$LFV0O5M*=ZF9<LS9^9$?^
M&:39U7(YNX8L=+3H#_9]B<(=SX%U>8PG"28Z "9*XZ%R=B4+Y2&P2@<CKHY0
M-C;%E+,.,#=96[ML4ONEMKJM4F"M\'040,L6K*N7A(-X)Q!:;)2GOD2H78RM
M4/_]3$^3&LZF"Z^".JA= @3O @1^?OOIT*#:0GA=+$"8MRO#H*::3AO6O$)T
M"0X]5 XMJ']<F1S:ZTC=FJHIU<6A572*YK1)-C<#$79C)KN1M0/VRRNNFX2B
M6W>S#^J);MU[2D41R@[\VSO/5J>8INU:$^KC@L7BODF(_.'I<UIC9QG7!C=X
MKKO8"$Z4'V*8F_]=K]1@=!%%5^[P&RN]]&A=J( 1F]P%F+DSL.E>F-I5B)R\
M)S1'?-47/K0H=,,Q7D3IE9(QWNE(G3:/R7J-LO?+5(K4ET<>;0X(1 6#'LCM
ML$*E,#3:ZYO6^:278!\>FM"%C9,31?0+?"<GPBJ&Q+DAM!PA8"3X1LN7#:(,
MI*[,U;Z24(>\P3P%Y4H1'02+0+DHHMUXG;CB*/H.8:2TF+[L+B*48=.D1!$M
M!]])"99?D:'I3'-%@Q@ -^A.,_64(OH.YH9WLGW7!T]0:K>Y.K8L',$4I3<3
M'0?W0AX4T7+PG3Q8;R^S;#Q#V]#D\_YZDMP3L5 !]+Q +Z+#8!5 [PTD1>;J
MU(LH9;"F!VU+)41ST,2V9HBV$!0:L5F"(DU.%-'H*$3(5P (%0NWDU^)H3U:
M/[!+<?&V%!/Y:EL.I/Z(JQ+VG,.L]@%PB/,B&A7MCG/1:V@_M.#,I[@N5*$X
MQ;8YS5PI)/DF(GQ^+.#'*HSY5OJ%J5UBPW!N)\EF>CY?M",-1%^DV@<@F"N>
MN0K)^JF-N92AI/#+7(UR@GD]/<J2B0#9>NPQ 7%R]$#/I:6&[XI(44HXF+8X
MK;+;P;1(2;9VK[;*-54>44N+@ L^/4@^[1219%45G_9[M36)J8%-2XM<B$.D
M11\B/73SD9U2^ZJ;V%3%(=*]/WXHJ+@/5!2!\=C .'DEMJH'25..:ZF_(VO.
M3L\<8CR\T5MFG2+J%T8#:]>.XX&*([>3ARFVB?,3@&1?PP<FZ#O:%8-]_!F#
M]7MIS6BK#$S'1 _>.7"9X=$)/%!,W?J0RG<"3QIVN"IUR#DP:Q\ AYQ11%5"
M_CA#D88]$8GF7M]&TY(=!A=XM#N=$L,_LNKB5V2-8;Y8Z%UNI4MJ4*F(NH%A
M[N8],;!+M$?K$;_^D\+$,NAXZ.95K$S)VWVX+9*5!>#S KZ(,GR5 KXC=?I<
M==P5AW=6M>0]F4?UI&K-9H YYI *A=@X^5!$.[90/H @6(+C=G+)D,%LYSQM
M2,]E2>&K^ZA0?8V"=A'-U\J -LW[ZTK]89]#; M?<!%[U4U5GV,#+3/5J+J;
ML+TD@@S:[N#0G<%#SIM,%3U%]'GS=RW)=PJT!1I#>90O"C6H.P:5?[D/3?<>
M,FNE<581/>9R<1;W!56*04RCW%S>TY(GL8DG(BU9I#N^$VS=N'3'@M*2%_E/
MA:4E2\->/=Z+2$H67%HGE\;5="LH*;EX+NU)\JB>? Q^DY+W*7)Q='XUF1"5
M%4XFK^H4FT\$V=@ER'_M($"O7U'9U/P7M '!,T#J0 M*"J\J7JP5D8_F8_%V
M<A4@\1Z >&M224?_7BV!=T\<U]95EVBLQJVIK7X0N7*1@/-%=^:6@XUOP-!S
M^ 6\I^/538]H03>PO*DY/;GNH$CM7%'[  Z9+5/-C2*RX9K)EQ$SILMC_HN(
MDV0_?T/C(EK0(9J&15),DH1#.270MT))5[>8>F>-;Y Z123)[21?[F BEO:^
MN7@@=:*2S)=NNTF88:^V*F@QI*EBIT. /Q'\123,-0G\RD!2%$Z.+C?(F4\Q
M_9(4;R:/_C))-TIH3.!JD^XFT)Z"#"7"AS\L9R%-<*UE\NF^M)*55D<N45I5
MX:+3?DW]=MW]FLK"G6#3@V+3P7LVE4=[PJ8]#@JNB32(JMW[%).%T"['2V-E
MLW>_OJ_::>J^:G$[8)W$'3#-\L8&@6G]A1OG:IW;8/#!,+>1D<,84Z;\J$,5
M,K(K2Z.:SO-5BLB-C"8873!ZKSN*]5GV@=%'0ZE=D\M2&Z/[1M.).[:T-_J.
MEO(]1W]"H/ U_=E_M18-B9[ **6PT7*$<W\ 4WM]!)VY&[443Y'JV3;@Y)*N
MTV+^0-LGN"D0DT2J)5&^FQ+*;$&J2OSBQEJ/2QY!)YPLCE]I7R6&$<CG7XYH
M7B*\=^98#=_'#7)E158.U+2+E>QTG#!0AC'V&D7,]((?0^_]7M2VBV36=9<!
MS.VXJ&$,%&@)$V(7N;2/4X*PJEJS.3;?:)S1M%RX#[;A8UICV25/-C9 ==LL
MY<B=$H=0^<V\*7HR/$QXAHL<%SY@"?7'2YL_H!>3$SX=3Y:$7!$8M7,"""RD
M&M@!<7[W[?/?CF)1$$A:V^?_I)BV/].5&][\_!%_QXT$7IM=W$Q\Y/:"!0XE
M;U3R[2CHE$1!-X>?ML8VP;^W\,2EC\#&"WYS,HO M77Z]<O]YG5B2 @Y-OK[
MZ:1E6R]+7L9H:E-[XL^NI1ZMB(PH1^:#%' /DYW %Y?4HF&[V7B!^"45EJJ0
M(Z5(1\)&ZG^^-CS?AKGQ9G W-=O6\*JU=FL_85/_+S.G+A?R MZ S75G@Q0Q
M7?;V=O(U%" /"_E!C3+#<CR;/,)C/QOLS"TS(N51NSOJRT>(@($VA^>YMD="
M?JM^36FF PA,=$9F47"=@N2<PF_H)?+9"9F=TU56VG+G$_J,'9T=*XVNPB).
M4M,\5K%1QPBH(O),##:ZRP[2@"319^@RJFD60$%+I/@+:;D6^H['<'^P\X_1
M!_:)P3X C84N??4FH1<B(0]^8R/+LS^B*7XF:$R(B>;TQ*_MG^"AZM#6V(E?
M6@F*O?=,UFE@[I\<HSW[GH@)SH)AO-'OR=P?-'O:3Y--@8V1C>^",1%&'WX>
M/QRC;Q<7=Q^I4[&8Y%*#ZJ;O;%"?B4;7V//I/743_!J/^1,.V OH*UR6"KHV
M0UWK[^PV%]3>,$A Y(V_HF.^)T^>X0_DH97RD_\[]G]R[<_=FNLF_0UKXV2"
M9J!$\HFP8F7$&0T(!+5!4YMA51'6_N,%_:"1253B.-A^8ZN&T03K-J78@GL"
MRR2DL\]JHT].].:+<]STH> !ZO2'$CS3\0S_:VOA_2TCFQ/#>G'88^G]_9BF
M$SZ;:,?HZI42'V&X VUC_:*#>:3YT@LP )\0W90"LRDZ)VI"Z0ZSJ4Q*<H,.
MA>IFNCJ GYESC )W%#X(1QE%33@8:JJE$ CL.9]"X2H"J\+7&@"25L.C PCO
M[DZQFW8K(.D;8C<;$T1>YT1E]E^P.!.=NLSHC6";+@=&+U/+(,="JOFR906H
ML?"G67(6$P"Z^^:S_D)@ (U8RU@GPE94#LSP[T *QP4#CIGM@%LP@[S9/) 4
ME*+8/S! GPLCL6Q*-#RC(HW!'JXG-&YOZ'BL&^P,"L7B,S$]^HK2V73H*WIS
M_R:L)%0(<X^."OOWIW(Z=8[T'IK'0+X<#Y.L#,W'Z$)U/5: P8<D2%Y#H_WA
MX&LF;#4=9F/[U7%]KEK,_IA*133Q;,J(45%*IT-_!.O%!%&@8S;K%CK:&^8/
MT5L2^+W.PDA+6?].XER8)AW_/9L8/8N155+_;<%(C(,(>-+:1H&-O@!3S\8P
MMXXL(1I(\WD=^&^B&R2B0)9]E=BLPHPB.H&9[C@4FQ\>KBX_TB&G/? K&=L>
M%<7RB#U0]N6_X/(5];8"K<_88,;$PY007U-,4I<X@:8O\$OPU4!F:POX;X'E
ML><BS8+99=$5 <R9)HZR>2"%-#1^B\BF0"M[<#&(DE5-&XD)H,<I&+[9+1=G
MRIA_3,4$U@+Q^!_/]$/*"V2_8\%M^'J=GW=A7\9PV[*/KT^QXXLH C@!X3RV
MGI>*,XPG![Y8O=YCM3[D \Q$GX"E8KH7"R/\#FBK@AR+]PR5!GF&RIIG>$]H
M^ <MITH]&Q->JSYNZW82U^KVUSH0?ZW (+C0+.9\<;MJB>IINQB?_\$SV.^8
MHLAW&J)I+_19U^G29Z%9J*24?-%#I=Y22$96$>2EJ6$;/(S/%OR'P$KP5M=Y
M><7/.;/\/EP\_/R8BGAXKB\OTT2J(OF,<:;#A$"K$O2(7V%U/CR">ZFFW7_0
M]<7QQU/TH,_FACYY"TW-R+BIOHK>&"3L.1M[ 4/W'P]V;'%W ^,:%-?<98Z_
M$TP+[ CJ?_D6_.K4)C80<TH=49<M&]5VQ,3,60L/"5-UAU^1@5]8-,1>> ^J
M 0B;Z+[)NWYG%^[L8#7B6_AV.HN:P"S(O.7-0U5*[S\.8UU/EJ6]Z(91[,+
MO0ES;J@C2P<X]\:@',#6<703G%U$*[XSFY>MR])!=2*)U2QHG8UMY)YOD 6L
MHX=[RN]\<FJ<L&6 )8H\EII "X,%X5!R%;@B&\R/W[#I6Q\KQH?OU]F$F9BI
MYJ'_D- =0X!%K#(S*=80R[A-Q(5<CK6R2C9OKK!-$4A/?[!BRO$63:=!%DUG
MS:*AIP #20NL@?P2FHA-EENU7-D(Z$: BDQ"Q>=BB5@+ BK8J#?I4<89TQ+;
M(8^]L.TXHK7P,[$Q^.^FQR13I"BSW\/ \ER'JF? US'ZHAOL5N4_2Z+W9X>7
MF(](;[/\%4TOH+J#R@#_ETQ OC W;QF+C]P./M70W*);:V'X!V9"I?WJ"-CO
M @.%BC-P43TU;@B+YR[%L+I\O+TH]QIQL><K'9GTH+=(&.6*'9S_E&-TE_SE
M>AGMA<N]TN6)Q:>#A*;@&YHAY0237/L*OS!C[ FT-/W0HVU/_*]:/F'52*%V
M-*?M3MB-@A'1X>@N_278&>!U+]?"OQ.=+M@AAO5&PF&&E[";P7R)S8)N='TB
MH_59C6*-O ;N]F)U036JX48#+,EBE1;KND9I:HT883!^\3 0OCZTG B.Z#P=
M,&4TCM1,7=$I/\EG3 SKA<9HF$$4Q$]\YE]08,RD$HO3IDB-4YZ6]'UZ5Y]N
MR7@ XT@JW!:I#Z/>>HI77([&+FE?/"S;[N$9=0IRUB"WDW5+AJDVEES)(,32
M).*MFVZL=1-FI?DT6B2DI26H!?D?8&:RIZUEK(7Y.LIQ[Z]K"3O^1U'*YTX/
MB<F"HP=!_-S(&@^69,^6+O".,#6@C_G+47]!BUU2V;*=)4X(KZQ'5Y:W8G=:
M":T$D97(6(.A!HRZ,(93[."4KQZG-JC/'_#IU$%7=)<GV$!A_^S8H%80FA]"
M/^BO=9&Y]I-LAX+#S 4F^8?K;YY)4*<ME0K3S.LEP"+ D@LL'(J^T+;L#G,>
MV]UR,VC3\=T/+#)M>0XX>2S!AV6P^<$@ZO<M0T-!EM#'LFV2!3,J@AD3=P$4
MF2M&$T"H#0AM 00!!"$1!! XE0BU5W*+/=Q9N]UULXBC%U7"K=0J"-GB,&55
M)\CV])0Z \.$+J?=+9NK^-O7WRTG;X$D:51.M?%L*U0B' 36%EA+:#O:W;)%
MR.Y8Z[=+Z:,ML,8/UHKH,UD UOI27Q%8VW.L%=%Y<7>L*7VI-Y+YP%KA\<4U
ML!W66^$IQ'H*?F9@ZWT&WON$N].&^A(EEWS=6?2-$GHS)KL/+/%E7?C],Z#@
MA4_ &Y:(>#MAUSJW2S(RBB^$8SNC<+R^^<J*N0\Z/?A;2D'W_=;&W*,PH?=@
MLF-1&PK!'NRWI6XYS0<%"FM%X=:MXFJ4A?UV6^H/2^GL(E!8*PJW;HQ6HRP<
MR$.IW^-$(W.8$\&#E;ULI+H\F[&HDA%O5Q?/7>*.XH[BCN*.3;XCAU&<594H
M#[E0.;&#NEH]41<<_/M_['UID]NZT>[W^RM0DZ2.747)HG;9OE,U'B_'B;?K
M&>>M]U.*$J$18PZID-0L^?6W&R I2B(IBN("2DB=G*/1 @*-IQO=C5Y8(!ZK
M*-=0_\Z1$205*IV99YJFF\9U$#S<6\0: &)FO&;R5&FNE5YYGF-,5RPEZM8.
M$JRH_D-[QB]?.0X6=6 9]?D4UHFB]JJRV[-1^Y0,JS-CA;BXB\-=5G6Q@MKI
M*+VA9 ;)#(4P0UQ@R.&>L]J8H=]11N..9 ;)#$4P0USDRN$.O-J809THW?&P
M4<P@/7^QGK^@'LY)W[!G[]8EG'3)U5AL$A>L5-B-O0^9G6N"_'?V_;XR'M5T
MMB81^)0/UQ/'_[ 3%[%26*Q P?@?*J-A1QD/:SI.)?Y/$/]QL3*%12F4(/]5
MI3^L*DY!XO_T\1\7I5-8?$3A\G_<&RF3NKS.>?$OX$V7"/;4M\0*@<VYQ)0C
MRA'EB')$@0,H*BU:U)@ "A:HV50?W1&J8)U9@\4HK/T<&?I!A=E]M?2/"-_M
MM/M5);:>HUEVUI"/BQ/:5RA 0EY"OL&03ZC#DEJOH!+(#^7EBX1\*9!/* >3
M6C:A LBK[4[#("^@OZTYAI'OLI6F40,E2$*1GT),(Q\74E.4H!<+] G5A@HQ
MCB3H)>A%!+V:4&>F$//H2-!+ TF"OAS0)Y2U*<1 .A+TDTFS0,]-I%=^D[%7
M+/[=;_ 6T])6A+YSN^WZ.D&[ON&:,+)=7T@VY"2_<^9E'7U_PYW3C8>@S]Z/
M3^_^<;$C?SK;S?6B0L1OP0=OA5W^-@;\>/LSM<9[Y"G! !LC+.8MQWX,/]K^
M#!L&DA^?OOWZNK^2_(Y5'A!RBX1OUD]+:XL\Y&V1@WF%+:2W_MAXO>:2'U>?
M/K3>_?QP]8_6U<?;#S]?$\U\U)[=-:=L< /?A8 =NL@./K3_TF'_BT.]_U&(
M]ZVM^?-]_-9PJ!6Q,;??K[\8UN_P*;KA+DWM&:EH&A9M3;%S9 S.HQN@D86#
MA\5?/'MVL>&/>?2I8<!Y8J!3A>\R?F/[S=#_LO7=)$1D9ZV+2]:9$@O.7./A
M9WGNVU?:0;"(OHSW./VQ-9,_]O$W294C&V+H550.15]'/ZBKF?J[E0LX<=UK
M^WYJ6*R=[7O#G9FVNTKJK#YH4&?U_E9G]6"Y)+)>5]B>ZJDR]#!':* #?;?2
MR$7^KEDKS7DFW:Y"$#0*802,-O[69O]9&0YV# ?Y$VTZON[0G=;J_CW?D3]7
M4R#)9VO6)B_X[LS>X'O\M?[FI8+J)_EKFCJ<$ BAMKK=Z,M@SZ]PXB[K=WWU
M9+BM*W\A/1T?_)5BQ&YZ3>889@&1Y!IPFK _;AW-<N<4]"]=#17I8=:2S8.+
MR^ZDW]ZMV$P  ":\4'"YKN%Z2&T@<RIQ$DIKE$<</V/4O;7]WP9#4_<;];[/
MKS5W$8R:BSAJ=]3>#?P/B ,8(S-X!"L!DT:8Q(O50@@3:VO%C/4!7GG/GU%Y
MHJ[G?G;=%=6_._A?/.TVZ^OQ3_.99N-A3YE,=EMI1-@UPMU_N&'C>%97YT$S
M5\CJ7CK8$O/U!>#$6$I?67I ZGQ8' [;N[[-$(NVQ8BJ:Q[36_ XI6WR:TG
M6-,L@OVX\0>:F4[6K>L,HTI:HI!A9F2$JM%L\)_XZOO\^\K# ';WGPB4/T%=
MS$7.0;>]F]*PIN:<D8%/B,O 8$;$<,E2>V8*HC:'+6:TAF_"<;N:_AL+%0+)
M<2]<^+X[]XD,(RZIPZ9GS4!+QHQWXL%!23V7Z"L'!>S<P(609ZHY:0=:V$^,
M"9[L/^KR+J!;(GW%()(&BFYBOE; :VJWU5,/PL>_V&:RC[]J3\;]ZMY__\8#
M!.-VWX"=!XJ%S;X3_/'1=BB(7._(T^&3$^UPD!DV0R#CH+WK:XT]$#A=T\B:
M6*Q7'+(*=[:H?3A;QKU2SY9N7/U:P39&P ,*=*4TB1IW/NTQ0'9,Y"P=^C;Z
M\55IY^!FX^' 13N(@JM[%PBL:_<*C(T5 DWLX\N$ WQ- Z-.8U:,S1PG,)JU
MPM."GP5+4_.0]$ U@.O2L1]@(P'.*T RF-XN>32\!?RTI=-['%&;S=#(Q-.>
MW)GV%(X$BWJ/MO.;'3T.O3=6]]O/T!S/@K':Y!:V1EO#F%!K@<>4&V4F;B=-
MWKB<C7!.2]O__O29T*>E;Y7A;X)YPL,!<NCU5V!0P%;PA<"V@PG? \C)PC;Q
M3 +8F<]HMSY08GB1]9X65I#><\UP?%+Z4FM3SUAJALXL4F^!<(GLSD(#E%%J
MH3ULSS0LD +O:KC+IG$/O _F-*#0< --1(-##XBY7#FS!4,G(L8TM*EALAK*
M^(75/;S/L<MY%68'P@$8',=?3Q:_'$PX.BGD;(6C$O<5FU4#'D%\H>M3QQ_=
MV;;^".*@[?N5D C!>S@#>V:P9[$QMH=W**S.Q?,<H\3XYZX'I*)WQHRMY\ZQ
M'Y$EEDO;\5!0XL( F*YQ9QES0);EF7MAZB_@4-X)EP$[P-80$#ZR MB.%/W,
MLCVNG0&Q5B [4;UDFZ\]X;X!IU&WG0FBS>.$0!:LP9*L?0>H?=[GCN@.!3-E
MO@0SSV?^]=J[)3C"TS69)=>,$V ^CJG#7_,^\J&! S#&&0:IPB"D834@RC56
M> F/+5!T+7B/_1I.N_MP(O"C.WA?NW,HTV^4<- &FTDIO_PK-PWPERGF0/+O
M0\T61SA0FTV=%E/+HM.*=Q4D'DGQ?/CB"WV@9JK?E3WU)<H]G2(T.%K05 8&
M_XJL2:XUQ[1!PAHS?/?>UJG9)I_Y_%*&=D%06#I?U7]6((F9!-\'!G]?O7B)
MDR9+>MFJ!M?N(;E>X,O/UA5CX^_S?9(HE\N8':CPZN(R5>&'WS@4V#=@\S2Q
MLU?:&WB;\;@P9@OR"++'L-@5%M,JM/63@-]@#/BMR5A.TP%R!E,2L&4$G/S4
MXM_B$+!8G3XVI= *<_FEWSW(S 5\&W_'>R*VR4<3SN45O[\!410(1PK4\",@
M9J#.HI%E:KZ:!K]F>EH(L_W/OHG(V4#C)MQ>.ST5&&3<RN3K9M838'Y&-X33
MIMH;T#/<?Z:M_7!LSS:UJ?M',& ;W^. )GIXM^A&]>R0_)$Y1"5#J(3.5Z9_
M;%#6AB2<+3L%C=U3=Z&!!CUCB&"J=);++Y7=?77\NR] 0"95T:'!O1B@G5$G
MRZ\8!5T*"BRL'S1B7SV 8=;D-X (ZQ-Z??Y$B&4O?29U&4LF/SD((/CT\>__
MVV^]__RM!?S4<O2[EK=@NH,.[-6:F09,H@4/L,%*H6[KVG5_^G^T%MZ]V:(F
MXY+6PKA;F+ST3615*%H ;^;I,4F\Y3>;H8BGW$)<JV#1+]]3;V'KG(O8M_&,
M-?AO'1WU*X[RJYOK-.",.P/_Y'QK7";<9AN7-1W;^K_!@N/"TP=KU CV[6-V
MD<EE!E<^TL[Z?H*WN]*S_@?Z>UQV7_/9X@<S_/&9![I<A;O)CJ:E"=K554B(
MSY8'2@#:CSD\W-'3O=?>#;",/=V-\(F^HT'91^($SW=Y)/[DV^<_? _(FH1K
MPN4BU^4P_8)X3:7 1;"7. G>Y^*)LW3,:<'@2U X<U&VU]YU\W/9&T?>)!5R
M+[FSU;80D]SO*??GWVI/7]::\G%LWVG'W-S'L;WN/YRYJ#84=:9\;WR7F<',
MH;G':].OS-(J _VPRA^PR&,W(.9ZR]\ WU,?.?4>*2B+N@.&"O/"SY@%&'L8
MHL7%#1/N#X$%&O_5 J\+?AL]GGA SK2EX8$1!8N8K;@QTR97^^*LR-]7%B6]
MSDX8U_H49NX=7P0SJY^!P_=.;_ND\9Y]/7V^\JT?1T9FWM<I#=;%;:T]FD6;
M:Q:WB5H#NZ=Q80_AG4>_TV 0&1^$Q3HM[D1.BU7>"'G/'..[&3:_&4(<J(G#
M(" _B,P7)!*>S^#@6-$#^7KSD+^9+:B^,NGW^4_0#^\L1,%G'3V?<X/J5PQE
MP3A7EAZ1F%?\^H-%_<9'H YC(U#)6Y;%X>\-N\K&&.DE1MM8=^'?+AA3X=\<
M-@#36_^F-;I'0>A]MSW8#M#G;T41<5@ /-]XPT*"(!2>,)S53T8INZ#9?F/(
M7]>X_[>4)/WC;*I]M3%?,.>,O7+QEO;E_J*8^V?CXR#:&V(W5PW(#/@ T=_=
MG^V0_=%'] 697J:(S0A?,N') YF/HE*>UBK5E)O8._>ZH I[=.4?FKX\>QU&
ME!^W&YD**#9L%*!6,%  UFKJ. J+GVN>L.=K7@?5'<F]:[D'C,NK3$RL[65(
MK,WUQ!2;9="IZZ9Y5\]!G2*#IN,#@'\S-%=Z6<V5'NC/2G^2O]1"KBV0!T#(
MP)^W76Z"\_"^ 6MA6[5Q;/L9M/<YICO2+V#PZVL4Y&7D_L4E&.RC([H;5<7)
MIWH4!YYIR<"',W"W$@8.=BC?,3E6E7%_UZ,J&GN=ZD'Y'>.NB6F#%8XA2*6<
MEMGL_*.?4DP+TI(8M8"VH\-!KW$',H/7-]N:':U/JXK:RU_0ILP=DX=U6NW.
M6QMO2K1-;XR4+T+*EWZI\B7I0C&+</D<!*<$RD:LM.&_88C+)6-ZZE#I#G:S
M_1LJ9;+K+%N8S?_G6<L_YDG]LILU)'W/9?B>2];(-R"48??73N.D2)M"#[VB
MC[<JCJWTPZ?<=*1C#I]X#W&XRV&V@ ^ 7$?/2.E,=L-:RMG=,Q?2 9]&8FFD
M<^EPY]*H<<:HO_%QD8"'L.I &1[1[?M$'%:''X]?0A^3/"!S'9#EEAZJXH!<
M.X)R,=Y0&73*NU(5\HP,7!O 0Y'4EV.8+RDJN1R7S/:\B_;)Y'I,,<=EPJ/3
M.'C2N"-S3P#]80$1PT[^)NF%0$&,HU.8NY[2N5\Z9(]SR Z;%SBU/N*/EA>#
M2F^%Y75/@=<],:63I(014L(T+\;K:+G25=3NR=PDGZ:N$BM:OE%/WB,W0JA4
M$W>64ZBDWB #QO()E4D?I$KW5*1*=H6EZIOCTY1W%Y?700*XO(HX^"IBN+<>
M<86-%39+9Q\4X=;K*>,CVG/*2/,"6%!J%K5K%B_26+WR!C/1'BD?'?L^,F+.
M2XQ^;[<BC@AZPDMY$"<;'JQ 2WFWE6=R4#>C ])!AW9WI/35\B)WY*&=?FCS
MRI\$2YK'UL^1Y[B0'H)R.WY5U/SC(#DQ'"JCCG0["BU.4FXT0JE2H@ZP(UUZ
MI4B7,OJU5R1K<O5H'XK<"D]MJKLQ>2L:W]-=C,IUG4@K>9$JUS6RA_NZ8WNL
M0AW7*3S:7GUCR..KCZU[BR<7$AM%.JTGM%,/<.,'7%PCQ$(^!6EQ1S,W5-]@
M83B'[FAKZE#M=XMU<(ST:8]5!];,GZ'K>B(M-[N@I[9=3^Z/GECN+S/HTIN;
M']+.O [F%+JS>>3J;;LTR[X.YZ,&=3@?;'4X_Q3V\+)TPH/P(O6)KOR*"X(V
M/*]L!EAE-JC.Z[<!F6F.\\PJTK-^+<B282,QO]?1OHKZQI/?_@ ^6+B$6E@5
M/W.17OY;5D(XMLQM_?NT/@UB*MX^K76+S&?$)'I$,*TF[KR+/3:R'@X"D.UH
M4;:NI1MP=[S<&E=;%W>G*FZT)FYG;TW<%!K76A\W=5X[2PIJY?;2:N4>-N0Q
M+LI#Z^8>-+-"RN4>1HNR2N?>&$^LZQF(Z0],3.^*XKW5= ];B;@.L@,Q4#_(
MWVDF:YBS;K0XI? MR^\.R&KMPS[;AUVL'\<*10Y^4)'5?@9OV-%/3_%X3>)R
M<SN\*W>)M=S4[E@9#?)[I8XF2?7W8HWCT[4MXGLUHXITHSETW^"U,^4XR0V]
MI6AFX<_ )_V>;=X/MF^UU%^L@V<K/%L/S[3]F-;Q,M*8IC0N*_<8W%*9O 4H
MMSGNIHMGQLP32PLOFTP*Y%$?"=<^$&[7./BD&=:7G&&BD?YS2K^3OPY%2=0]
M+(CLW$[?72V96OJ)ZL<%W"I7<&07<<,\ZB3DZ6:7%;G.[GYGI*B3_.4*CQ(!
M283*=L8W[$98NEB;<(,0VC9!WTL]M97BJ)/IL"^A4GJJ]GY("U#0WE-;S%=Q
M1^*WY,9&\[S[-6M^O7(V6BW[+<';Z[NP=:=FWDT0*]+8ZQ;-:)FREN>8QL?R
MR%G@E>OY#J7P'LB>^\!#KV<PXY9+9RWCJ;4P=)U:KX,-[S&4=CO:[(W:&6(?
M3_Q1M!TM^;!R["5E-W6IV"DA#^%?8:/[3]2^<[3E G4A]O5?-Q4#2QUTV[N.
MG"BA<*=^8:<-G;!YNQ&E)FA.O]5PF[>H1 K#TRP;NTGBS\.M--S06,+6U5Y4
M0:+:;.%K2 1IRE'MBUQ"G_C-(7'83#@.@V[>N.HL)AF,",\TW$CW; 0UMC$%
MZ<VO'_GM+;;9=NB" B ?*&&=3FE<7_4SDKT[#7>(S4@%-+76.ZQY_DP/NX!%
M;DS[R7LZ8QQ$>BK[6><<[VT'YZ!4%'AO^S&Y3U!*G]-)V?>YT>W<N7$MC+);
M<7%)[51+O>'U5]KM'V"79$?,T2;0P8\*;U[5SDZPVR1+W& !^YEDV,8R]M97
M_+FB;V?[([::U]SC\R;&)QHC"8I>X;[;XWP?Q5TQK_^54+6]!#"5N5N2(R1'
M9/\H7I>27%$&5VPSQ:ARGA 3N;]<.E^9E<,M=:<<L""V=FU=<115LR2G];EN
MXO\P6P2LZ"O0!<%>B=O.TJZ)RM$M<UP@9=W-XV,((PP1EZ5< 9=T=P[YYISQ
MZMKH;M 1SXH-->=8WD_DO:>RA/:90/MJ-EO=K[@K^.H>RSO\UT^YEFB7:#\U
MM'^CG@2V!/;I 5MJ*!+:)PIMJ:%(M)\/VJ6&4@FP!? )9TZ+%!&F7XPY)>@M
M>Z::@YZRC)"M;[L%=BQG#_L7$0K\%H$P1/RD]YK!DE'3L5%:!E+I#NF-6)'6
M),Q4J,I'O8F>24)0V*/A+<B<1=X0TWB@?E!6'9<[M3UJ\+=J8J;J7N=I/FK[
M/):[UZ1'2=YK\J/D[C7Y45)R-OE1DO<D0^1]U+;E6N9"&Q525%1[]Z^:\YNR
MA"?-KR99D8,N6__U=+=M"9-!M\G:#[&5"\.SR#'M/#FCNYO0PI EA*9DCKQ[
M_JK]VW:N,;F#9>Z%._.3LIN"[1]D21M->5[.;F/]B\M)KU-&XGC1FU29##MR
M8H)"/*78R:C;:P;&(_=LT6NVXXJG#(?Y&^V5LX%A[10)\T(E>;\9*,_=>7:8
MO_F4E..G /!!<K%'D0 N515!)B8HQ%-5E6$S,%Z8JM*/JBI=T> O595R)'E*
MV5Z14)Y+50$YWE/K!G*:DZ+V"=08 Y0PP</+;90"TZS Y $?&.]QL<%6DPV,
M8FVHU_K*P2"0BTNUT^YL%YX3$Q(Q<4*510:=!C[<, HH>CCS*EGJ!F2P3'HB
M9+KKDFN;B&E4\%!1KN=OMM7"$EG4HT2[<R@K8";]SQE4@11-H%>4^QEVQ]^<
MJV!O:K+C>A>7XX%T59R\@IMFQO6*\CB7 .L"O<R7W8ET+I\,H-/P7)1ON00\
MY_4G#P:EU)270KHIF"[*G2R.ZM$'B3RJV_4@45VOZE&4!UETU:.W6P]<JAX-
M!70:GHOR%0ND>O1*:1TGW<,-=?\E(_-?/['8._<1PH#WJ_N"7,6]<:K?;\=3
M3%HY2E*70 3MJ4 B]#LI1!A(=WGS^*4,%WD_S47>:_>.<I&?5G3VC3WW'C6'
M NAF"PN6>?<L'>3'J3_]HASDV,IC!=P?[-'6#VKSE:L]I=N="*;*2YNU4INU
M7Y2[O%R0%QCT=-E7>L(%^TD#MA0)7I3OO%QPY[5EQ\IX(L7W60.\*$>Z5%$D
MQH5548IRJS=$14$OI3+L#P1#O5112I'@1?G8Q511)LI@W)<>=^EQ/Q2GQ_J7
M93RVA,=!ON9!FJ]YE 28LPS'#GW-2]!VD&;2TWR<$C HRM,<[,P/?V-JC(52
M5!D.=?J:;9K=-BC*M5PPJHLTU%2E,Q;-/2$-M5)D=%&^Y(+1G+^F!T!7%0RZ
M4D)7"NFBO,=5JAW_I8ZM:^YB&\\M">5SAG)1/N)Z=8T$<*_K=(B&<@GI\B!=
ME&>X.H5#5-DL/< BN?B2\'BDRW<@7;[GB8?L/MYAFH]WTA[*>.+0QWOK:#K%
M'9!UGH\\QX=%.7?9EGS#+:DM'*<W%"TJ09I9E?ITAT7Y= L#<Y'>W(%H_C#I
MRBU%(A?ERBT,Q+FS6=6Z@VND/*X5R45Y<*O1+43U#T@0UPKBHGRW=>D4TFLK
MP1R"N2BO;16ZA:CR6/IK1?+/[2+Q2$_M,,U3VY..VM,#0G87[2B]*O)Q+MK3
M"L.]7KGP!W6(@Z6K@9[NPEA*=^W^ QPVVM&I$U+36Q@6<6W3T!E,.@K!?UZF
M'_2CPJI#^-OX,[J+]25<=I7NI.X:687NH51UJZ!RFM-X5%B-B1)8I4C_\5 9
M]41S(6??0NEJKO$T*:Q210DLDKO,LS(8"L<.\B@1G<II;%)8O0MQE*X^1B<I
MG29D2TE.$8O*J4I7854S!%>Z!LJP+UP[ :ETB<(C:2Q26.T-@92NOM+O"A<4
M(/2Y(;RS?_?ZKNPB#,EX+JTL]BBM+';,I4#Y9;$S4J'0NMCCM+K8$WDU(NK5
M2.H)4/PMR3C]EN04"F-OW(<4AHX,%ROPY%O;TTQBA+M#-+8]^ZY6?.B%@_50
M<!='C^K.1I\H)IU[/IFV#G!8&='M%9)FXP!/:$<=/^6!N%-.41K'*?<^-=S7
M#/K*N%=/!8IB2;X7W:5R5\T1?]4PW$C<*:=Y,L8IUT=">"#4GJ+6E!B3>Q?2
M/0^2U\[T<$NYAJK>DZ$JPU$]K@QYM E*RA-CMY3KK!ITR6Y?Z=?44$ RG*"D
M/#5=,N563 Q=LJ.H_8;QH-0EY>$6PVHIMVO5ZI(88=%7>H-Z(BSV$#SJ>EW3
M>O,K_K1Z.U=I+3;OU_Y^U7[R[7G^]I69?Y5;W-/?TONHQ_@U,:P%?#<Z,7J?
MMNFU>G"WKT9J)0^_*WCE36W]&?_2 %^7Y/\00G8NXMB;6ZD+/M*CRT$&*(.8
M2W\&"V=W"D]$6WDV&:ZY[C69K1R'6MXULEW(3B J[F!H6!9]0_P-F:#<75#<
M!7CH=AQ"<'$5S[ZQ-ROK Y.\$H9LU<_@\_:]"N!PYE#-I3KY:_*!,MP._DNZ
MMWNW<@V+NJ"6_6=EN 8.P^[HV-\.U7OZGZOI >$99KS.QP=3P^-HF/4X&EQ<
M]CKM\<YA1("V)JY97SD@A(BWH"2%95WCB?$KN8</%BZAE@X$3/D!^?O*HJ0'
M$$1B$?9CS24:<:B[,CUBSXF]<HBV)AN^A;1JD]T]6V@/E$PIM8AFFO8,E5\"
MK(:3UGS:L-_"O#P8#( ">^<:KH=+@W%W;M?@31^;>'<<+ *O-EO&4VMAZ#JU
M7@=0&#$@=SO:[(VJ8E88_F9-0<,B'U:.O82QK3V@&B>!JMN-OCP$5/^Z\8 <
MV!OY$[7O'&VYP/M3]O5?-S4A3AVV=X/DHO3"C?N%#]<)FSX  [>$O:_#W\'K
M"#S:Y!;>0$+#PRS[WK 8"G9WEO4E=C3+9382T3PV$@ 6!Z7:;$&6[)*;()$Y
M\'TI3>C3;(&Q%L1A<^)0Q2_!E#5</LAGR__V[#E\"BY*T_^]<CW<!A@1GFG@
MSV<H[W7"<(^=K$'@6PSZW^&I#L'V(PY=4$ JP/LS-KNF;?)Q^S&F#0MS>>(=
MQ_WNHA\IK#H->ACK48<\BU6L_25>^RN\7=/QDV987Z(NI0-@MRZ!T&GO>G)#
M^'&D919=;2Z[ 'Q X4?X<1J1U1@B=]9$/M8@.8!N,:$]0+M' *1+K6T_@&7O
MDBL5[<;]$KZ7@93OZ8Q!A?141LZ.3\ZHZP+8;@D\0/&1<="&IZ0BNQN/[/XF
MLM.)'IW/]_DVW?,)P?;N+=T:A'M.BNUKR !)_1!)]2PJ3I7@!VFP,MS$/<J$
MMW HW54G_ /Y0)W"2E5#D%3L>PI*\R6%&3]0\UG9OP'#3/*RV@T8;@0GYD#5
M:)]\$I!5,@"J&.UT/Y(4_I0HDMIU&C?UFU<?0,6^YWK6W9U#[_C+..$^92:7
M;6TH7#/-<9Y1P7K0S-5:Z_-_CX= C'X'^Y2@L!E,CYS;8",\NJ]%VIE=?\%P
MZ7%_021F_1!_0><<_ 4'Q]%N"ZN;V8+J*Y/:\S2U:N6M'!J5:Q\X:&\1@K?P
MR'=@=/[V@V+52:<_&<&3*$BZ)3S+<U;T@D^8O&6^*W_CF!8VHZ;I>_K"O\%^
MG(5_8U@OB!O#8D_;CF%F^\Q(;H!0LSP_0K]HA['#@81.J T7,KR!P;?<,5=>
M,.^X=R+!O"^8<6NO7)!2[LO8&-[2/+PQJ5.;:1T^L3M_BQ<6 EY"8.Y.PBT$
MR^AY$U/()D9,%;U"@/ TS<&]/A4W[!Q?JOB.;QBA3'CDIKF:>/$3D#R*N]**
M(96=HW%H :0P78*IC((5/JI^ DG7QV5?+.U)N8F[&YZ4$M*[JRUPA #;? =E
M ZV@_\4,F3P7R#U%[=6=H9\(M](2>T3C>$!)]^SYO-9;Y#S,7D90<0RS?X,'
MW#Y2\X%^93Z'G"6<NH.Z&[H>R^?-/]D!(#W)YTWC\[AHYA+X',_PVT<[)WMW
M!G47"Y''.."B+]F[:>P=%SI=%GOC=52^CBC*N%=W^5)Y?@,R!I+!F\;@<0';
M)3'X1WN5UPX?U13'+0_P2'=(#+W1YAYUSI'+RRIO59U(R+^"-/DQ/E1^+!US
MFA+RB/)BMI54=86@RR]!,,-JK S[HY.HD":\/E%_$1^ZCH:("8&H2GH)E)-6
M;+Y1;7<.E:XR3>A-9,6$6K/<9*+2R0<>(?O1IYFYTNEE#1-9[YQN/ 3!03\^
MO?O'3G'#3F<=K..'[\0S1QB;M#'BMU]?XX?<&SBQM;+8@Y@],"V<<LQ#*?G$
M7L',@M=KP!X,33[_ )M=Q&8L#I?PT]84;(K?+696O"::^:@]N]D1ND7+/]__
MW$]+AI0U:2(#+.8MQWX,/R)O-;)P4)#_Q;-G%QL:350*Y@,=Z"HL1,V>DVL\
M2BPL-:B%TXINQ?IU]&6MS/DJRIW1U]$/<)YQ\AAI?LF6QD?DWPM6=GRPX4?-
M</Z)@:SO#7=FVN[*H6Y\]* :&SU8A[B97GZSO=3@ZB'G5)8!I_;>$%PE8<LD
M7ZF&B[SG()I>BA1Q6_T,KF8SD!PL7^P&5"Q=<W07>$PWYF  H6ZD ,8N8\D'
M:+WTR(NKF^M4F>GG,KQ40!6;8YH6F>-H/'A:<WFB6Q 2O0044YZ,]FBO3)U,
M*::D4=0!65"]9O&0:@*OEYK!,RHQR6=.X4-B&MK4, WOF;S0T(8Q/#[DRR"!
M#_ZR9L82[!X8X-YV/:+I#QIHEW?47KEX#OV&P8/P_?!1ZW$QJ\XB3)Z;?GZ1
MK_-.J?>(V9[^&$L-C4AXE(69F_SI]VOLL93!-LE(/1#VKHVF&HA!PUU@[F&4
MC N#.IHS6SQSTCF4Y;VY7%:'6[D.9[>G (@')E(Q,GUE1=XPK.4*,Y@6N!0V
M7P3'^F$LI]&A+&4Q6[Z,21^HZ?*45C8VFV1:IL.]]LSS&V#[5R[/'_1I%YG)
M0<'RQ8=3UL^\P)E?D+9X<*2%=JI<#O;?_#\8E^I\5QA?N S/+"W$QZW+,]HP
M;!M=(&'J\9H'#.J>>0))5KIW [I_#]F+T][G YMEU (W6,0?+V4/-W;-7<T6
M*#S_PS8T>!=WSC5@@9H3OV]OMGY@6.&N,Y[<P].6[?G2B"'F#8[.UQ!E;!PD
M(D_@.S,-I2-H)XYC@RK,G$W3Y^B7?)D),E'CJUA-0=8!!#43I2R(SOG*-&%3
MG?LPX48",S<P>P$P?T4D_P8TPYUT5\NE[?@[!D3V^):FHL3/:^-[RK"")R>>
M-.MA8?WL8,+<<UX4(7*>R2U.G $6%, <?,UZ_L.-II=%2+0FLZ\)L -T&NH?
M.I)4Y_H^KS80I;W%"EZ@ 8L'/^@,!JL_@E8*<+*[X,EL^ ('AQ^A)JWXV\VX
MV<5?\YFP[]I,P62Y<UCA E0G;5T=P5\,1^3DC<N']DMA,*UAJEF_07E<VJ[A
MN6D_BLQGO=3-U?GCXK#W8(8_!RB]7WDK..WF8$5O/@(>C%*'*:ZQ*'5197J@
MO(Z"ZQ=HR"K..;=M// /-X&4ZZES%+H+X,L6$XEL_VWKSO_K#G/?84=6%E-
M305%[Y()7O95+K-U.O4BX[>YD<27%BC Z]]M?1O3%N$0@9D"I-<TTM<ZIG_2
M!-HP/W!>9"3,R^ALW' ZO]HW[?6R(M-1^$=W]@-U+*9><R)L?&6&USI,&:8,
M5SZD&$G8SSV'@>9Y \ .C5\HWVB= MX<OE@FJ6*7'3V8(V/OIT8WH,8F0)(X
M"G<EFJH: 6MPS8,+U^[1YH/I/JY+TJ +'1;B+F#!"]N$$=V@N TC$(R\LWC\
M'482P]0TQ[39:O']>UN'9>U?7<]?W;GK\;>,_I@ S*C*&7]UCYC[+Z+'L#0P
M6M?*N!8I!90U7]Q7W-+SQ7=+7_A'>;PPC3LJ7M=/SO+SF,^B[EEQKD5^9^=[
MCO3OUL\ ,N\0,?'>QFY5N<J#*G.5N^V=;&7V5JGYRF7?T9<V_KIC5B?<MH8D
M >]/2!4Q!SC?1[OG3/1?IY$R+-$NT<X_BE>13@_Q9??"ZW=D^8PRRF=(D5&B
MR. FK7I2C"YA>J(P[4J82IB*#].>A*F$J?@PE8>^A&D#8"H/?0G3!L#TM Y]
MF6:8XA\!.'P,;S#Y5=#KTC>^<C$2(SK*NJ K:T6P4<$CICLI<<U9AMP809<A
M-T;09<B-$709<F,$7<99;,R9%.O9"O^9,')<)P4ZGV,YGTQ%M$ON77MXN:YQ
M+Z7<YK_"X+1WS^'+/X,T.F:CLA9RX6>?6:0V^T#UFQA&AH@DE7[$F'N,/=[\
M?33M-(Q_R]*2#I%X9>GXGP]K&,:D[>8KB-%1AI-Z"F*("O#:)] @#DNI>'D,
MAW6;Q6'_I8ZMPZ^WF:LE^4JD"32(KU(*31[#5SW)5Z<'Z]HGT""^BBO Z#>X
ME1HA9ZY15^EV=UM;GC/ :Y] @S@LKMI? 1PF-<(3A'7M$V@.7_4[Y?"5U C+
MA;7PD0$E^E"_)A18.'L7:NH$!)0]:C9KE,5V7&.Z+1,7;/N_LMW_B&4U=B7-
M.:O9JM)5I9;=G D(R)9=0=A2ZN;GQ@RU3T! ;DQIV%LI-TJ-_MR8H?8)",B-
M<1UU8\QEJ;(>H+(.!DIO-)9\V9@)",B7<2$Y=?"EU%G/C1EJGX" W!@7OE,'
M-TJ=50@O]$E&\GZ-*Z9[CB[HDIIR5B?6RNC).>Z7%&I5K>)_]: 9)F+\H^W<
M@,BZ"9'^GDZ]]5_Y7-4C93)03Z(?J&3V\V;VE :\S;$FRF/V_L5E=Z)T)G7W
M#Y?,+@*YFL[L*8UGFV.L',OLHMHJDL5%(%?#67Q04E1<LY1WR>*2Q4^7Q>."
MSQH74"Y97+*X9/$D%H\+9&M<;+MD\33,"A\'7V>%O%O;T\RJKB2JE'S%U;KL
M)=9CU.T5,-V;^I)Y*EUDFAC-&($HN#'$"D06$K+4O[@<3)3QL!YO9J6PJ(RE
MI?0X5>D1%S'9O*N10J5'C7<A4GHTBH)G+SU**K56L0EWJ/00RV:3,J-1%#Q[
MF9$Q^O1L[!4,M>J.E&&G)\6'%!]2?.P1'W&!F\V[&)(JAY094F94)3-*JO\G
MS111P="D+)A#TUVV6BM],;2I8;([QM+[*Y7<CZ#R!@LUK:?9P\O=$&EXN1LB
M#2]W0Z3AY6Z(-/QI[(;P$4UQR="'*IC7,"98)3 "VDVN 9JVAH9"U?G3X:RP
M+VN5YOE6L!L\/C[6K2[+.NO\4HSB85P21>/BAMZM7,.BKGMMWT_!),)%KL%[
M'<5N8"<]-\-<SKK#E<<S2YXLD2<SEMP5V[DM>5+RY GQ9,9ZNV([CPODR?1B
M@<JP.Y',*9FS(N:,"WYO7#")/# E3YX03V8LPBN56,F3DB<KXLF,!7C/1HEM
M/D^>7EA#I?FP.U*G5Z_4@<?[X2N"BIWD":;)G9(ZA5>KGT=";!H;?I5Y-^L[
M]R4'EL&!)16ZK58;EQPH.;"Q'%A2]=EJ=>]\'-@,7[%DQ7-AQ9+:E$MU5'*@
MY, L'#@JJ72K5$<E!TH.S,2!)556;8(Z>@(<R-V^K[RIK3_C7UAZ\I+\'T)(
ML(9OJWMXX,Q_<\L%&VV85$8L=F2V2W\&"V=W"D]$6WDV&:[)\)K@[C,_OFD[
M(7%@D^Y@:%@6?4/\39@,8!<6%'F+7Q9M+&<&8U 8(#Z?,-9)OB8U>24,V>*K
M4FX-'H,J]L:#YA@:QG];B'XS6LH3G_79(MZ"DK?T/OJ0U\2P%C ]_,;<<%SO
M[2MZ?TG^L](<H"BQYVD_0)M6X3_ H:_M^Z5F/>,UA@Y[9>HMSVX!'V(UU.=(
M1RX8@;"=)@"')3S(T$SSF<QAA]@XVNP_*\,UF!"#"?RYFKIM<N42C3C479D>
MOHG?<X'=%0*_A??O-<,",8)KWFT!1AZI PQ&9]C7SI@;5,<G:T$5UQ:(BQ8.
M%OV)!I-QZ-(&,NA$\\@<) YY0)'3KF:_JL3&;63W@$RX.;!H=F3$I000,[AJ
M0\IL;YFN>338-R0A;!IEX_!OW@,G>B[L^S/;)=@(E-8 !G>A.70!V*$.\(SF
M$GOEF88%,P%@(%C@UX#)>S?8?_C1';ROW3F4G29*.*B[FOZ;SCP<G /%,]RY
M?RS"CY?482>$-:.MJ>8B'( <%&:EK_ P(G,#SQ+R3#5G'_XY_!$MV7_4]9F&
M$=5EI(%9K98XW[^F'./JEE=)][U*:JO;Y2_YB1[<F5ZM=X4=P>QOA^H]'??&
M/[M_:K##O-FC]F3<K^[]]V\\V$<DZPU(5X"/S;X3_/'1!IQHKI?EW/ZA/;/#
M_M;V)Q#,C[J?'-M=ETD>9G4D#8&,@_9NN3X"3&$RHED$9K=@^\+IFD;6B?AD
MO4'F2+H;CTP(NUQZSY_Q.*2NYWYVW175OSOX7^0,T!-@W.]S-IS_:4C^3D;R
M?_[V\>)2[?>4R7BW?!%GXY!'?:GRAPL4OK\'NKN>/?O-!2F3JVEX[W;$WYC,
M(0MK\7GK:)8[IZ#YZ+';=67IP7X=SAH#8(U1>[=U=\@:-M<# BF-VC-M$SP!
MUD=<L'N)!\ +IOZGB;D>$W$OB0%"E:+8YI+<16&GD:^XJ^1:<TS0 $!Q94>W
MK5.S36Y@JYC= ,]<X%XQ?<$[;'[FVE0@"^V!DBFEUOIH\P?$7<&0"PW/^'#_
M&781MW :41@4?OW9 O0"E3Z:JYFW8H_ LR(XO4 MM7Q5=O9,/-Q>D\\CU[-O
M(@<A: '=CCIY0SA20MTC3O%_JQL/EZ@K$*X[\._AF^S5Q@\2^*JC1BXJMG']
MV7H D.(T;^&7[TQ@Y O.KNJDTY^,P/"B -<EYGTZ*WHAGEI=V0S>3B^_V5ZJ
MMCWB.@#?X-X;$FE>N^X@$!;W.%M*1E53@P&0R0-W 9IY"^4*.^--V[KS_[I#
M)E3(/4CHF;'43 6@[H >C_(.OVH#]SD@DZ9>1-UG]D6ZL4/^OK(HZ8'1B!Q"
MV.XQY3)B,X"5,8/GW-D.+$%''3;&R,!):-P>\17M#>LBPTS>TQD[ADA/9;.!
M.<5-AUD]6_/9,<MP-H%Y%$X'E'2PRO G,]L%O=JBS.C2++2V[$=4G%'ND1D<
M888'U$==CA\B7&9S!<Q_,A>%CUJ\!8>O-VW#,LQ4_OW##4]&']W0T\:W;'\Z
M3-IK8%O!G+!,CP&P!2L$1ULY8!\$Y7O<4-S[!Z^-5&46DF^^W -_ ?V1'/S8
MQRDY]$YS],"0\IDB."#<9):(MXG1P)K[_)T5]6MCYR!XLI^]%DF.[?JGADN/
M^Z<BC4\.\4]USL$_=;0*L=D?9[N/SBV^WM$MKL9@H;V;M#YV/PQ;_0_7[UKO
MQN_?M8:=06?T;G(U[+Z?;"D>OEZ(JC3HR[-NMP?*R?LQCM!O]8<?AZU)M_^^
M-9[TAOW18-C[V.WYR@IYR_F$[S0SB6;4-/U+BO!O%_@Z_!N=2L %AG7K:^P;
MWF,&C(WR# Q@A3F4_:!:AR,/O:0;1=?@#0STY9YC<0.'$Z]\2AL?E@V[:/W?
M"[4?;ED<RQ:]4074PE,3:^$QBR*N]D>,K"AZ@4SI33D6"O]H]V3:^5>YE?'*
MW,%*HO[]V0R&A194K:^YU@NF/-HK%S04]V6I6Y\L3[I2G%0A3JYMWP@X%2Z7
M&#TYC/ZR' J/1COZDV98KL2KQ&M#\/J%N70D8"5@108LAH$1%@=V4D@5O]YD
M0J/M0[-_?[5OVFM/?<0[675&L @=PS<FD!1M.JZL__?&=%(NZ2>IM;("G_=G
MR_6<%?J\V;7ZKQMVY>E>6?H/&^]I ;<WJZEN/!@N7J[FZ<*]Y5L,KC#04'BG
MN49B-^[4?*5N1YD,=V_3SQF:M4^@0;R1VJ>Y/MZ8S5;W*Q-##U@ UEKO0S/E
M'<60AEOM*1?#].OI:"8J5FN?@&#,\B*-6U+[$@O(+6@D'<<MZD@D;GDI&448
M1DGCD]0.O!7RR9I'-CDFMZ8UZ8O$#DVJO%28278=!DMMA4B=O4F6.@$!I41J
M&:8$*1'N_B9#"V..J1.E,^R**B3D!)K %ZG%D2KGBQ)-,>FW:- $1+3'4HL8
MB<,IQYMA-94DDF98,Y@DC4?BJ@M5R".%FF"@7:D=5216.-];L3L;9FXA9/R4
M%FF*-55(3#JI;=<2'3:?0@A<(0)V>%P,JVP <D,9=':3L47%AYR @!R2V@2M
M3@XYSCX3J_A0(\%:^P3$L\PFG7PQ%W6R2P%&FD@\(VTTP=@EC5OR16&4P2W%
MFFM*?R*LB^]\+LQPRG,#L]U9XKY.E[9K>*\\>'KPQUE:;!CR&JG^MU/[T%M@
M'8>#VU!5)U_R+R!-&*4%N5R#JGAEZ?@?K/?R "+!\EPFC]YIUF^<^7L?46(8
M?ZRB>Z_V:_N2H"8Y\ZPX,RVLIEK.+/%2<"!Y5?)J\WDU+;A%$%[-9/$F.(B(
M"[L"K^KW%$EV%8%<36?7M)B;DMFU4)-[H/3[=9O<Q4!,^-O4.@N)L*ZD\773
MJK+DJQ1?Q:41]Q+S7'F7@Y0^&F6+N$H7F28+4Z*J!##G^T-ETJW'1JATARKC
M+LG(I\K(*:%?HEK_ZG @65NRMF3M-^D7[&I*Q):H]^,U&2:5[ED5U^Z2JYO,
MU6E,G1)D5J-/H3]2.OUZHJYK.Y9E1[N3KQB.C$B?9N9*IY=U=. (=TXW'H(B
MW3\^O?O'=H%NM=-9%\WVRVC',T=8(WQCQ&^_OL8/N;<PVM;*8EU@[(%IU?8G
MO"8_GUC8[&4#L =#D\\_P&87L1F+PR7\M#4%#>9W2YM[^ C-?-2>W>P(W:+E
MG^]_[J<E0\J:-)$!%O.68S^&'Y&W&EDX*-+_XMFSBPU?XDZ'O(-!=W')ZKWS
M9D&PNQ9&^6B7? \V_QWEA.CKW&N/6W3)B\6U!22/PFS]>F.=8;^ X(U ,.Q\
M1[9BR'4> 1W]+@?:6L^1G0YDIP/9Z:#NJJ2%?Q3?4$=V.Y#=#F2W@_,0*;+;
M@<2HZ!B5W0XD7AN*5]GM0 )6?,#*;@?G%XE8>X>$6F]#!;JS3+U9[,:%"W1:
M:K?54TNMR/LG-?5;^ZO?S/G8"KP#I=.IIWQ[#+G/(XJG,0B/NSNO$^&12!I4
MY&;VG86JW)^VB?YK-$!R\<!8XO]\\9\6$=:-*[DB+@.@1=.@*BLQFW'RH5Y"
M03\-^7'E4^I$/MI!S S*K>6,!4EP:%C)E#H-H=K[$HAS(@LF'N(*FNP3#T=4
MP"W4Y.EWE8XH<=/B .Q\L1Q7 J0&+)=DW'150<*,Q<'?:4,]U:")*Z$A'-9S
MVS'B0/W$#!GQ4)X&\KC"$S6 _#B3!;24KIA:BKR[V7=W(T(=?RD=$J1#7"F&
M_9Z-(@K#%F?%8/W]<6T%^*5J)R"LXPH3U OKD@R:H<3\.6$^S9SIY;N"KP_T
M^2R;/DA[822]M&SJ$_*]?!?R9>+].",'E)C^1$B!+N]ETNYE1"I_+X5%@K!(
M"UXHN/YFH?<S6%Q>D(I5XF#K?&&<%HE0$8Q+LF0F,NY,HMQ'>=J%NA H3S-=
M!"UH+H$N(-#3;MLK OIQ-LM Z8_EO4RN!135?<N^OZ<.FKHPXI(ZLM&6[#G@
M2Y=\\0T!G'X@FK[9WF>+%2O2_\?P%O$RJ?H\':4_F9Q$$P+)HN?-HOFB,ZIE
MT?P&GZC-GR7OBD"NIO-NGM@)L7BW@6:L9&*QR-5T)LX3*5(U$Q^9[G4RRK*\
MAI0=NQ+=/[)O0'E] _HIH445FOV3GM+O"W(9*MOWB$S!LV?8E-@HH6Y]>Z)<
M^TI^%IF"9\'/:<&]_93X)7%B<]':. -^/K&H7\G*E1[-*2%<=;@'0*D>JV>F
M5.]IOA5M*R),NQ/9?BL7V:J? 2M2^X#\Z"(7$F]!@8H)M7N(YE"R=&!_''@R
M? I$OS<LJ@.-7?@WR Y\++SBGAW\[@Q^]N(+?:!F6ELLE97(?=DF<?-)+*JJ
MD+TYNPI@(S;BG6B6SG_N.51S5\YSIH6N7- WX V07 Y?+ SJQ"\;Y^\:L$F:
M$QU[/S6Z/C7J!$;]T'P/! -:(P)2:#4W'+_7 FR"YL!&X2:G$1<.,(7_ (>^
MMN^7FO5,--U>XA;B>Q^O;MZ1JYM?Z<.H0S9**PW6/?]);XW+T#]/U@YZEP"9
M8:3>&W+M4!U0R4N;P\X;E^0V,CTX*F=<_V4SI$]+.L,_9OQG)OR,X8UJLT4
MMF>8"3'@(<#-WMPV#=N'+XZP=.RI-C5,^%K+GK=T.M=6ID?NJ;>P]?;FLVW_
MPH#]D!$*U00@,_Y]MS)T6!@E"TU/(YAE<U+ 00_O !D,&'WFH=# .<)#F$N=
M+7$>TLK%LG2,5.WZ$5G_#*ZQIQ>79OX6Q/K0B>8&1RM*)SA)6\&?ANL+Z]72
MMM@&!FCA4)R\<7&+.'YP-W L?ZO9G_RU2^,WZ;RW![C&GT0R'Y"_KRQ*>AW6
M&HJ?>[ C)F,AH*T6]*YM 3NW7#AG=D[A*6-)#Y7?%;M%\7<+MM9=V(\6,?C&
M LN;]B-C>(8/S2/S\'AMDZN-G^/ :;.^UYX)FZQNS.<@9.>.?1\W#39!.M-6
M@!"<A.&Z*^J$$(HL(]/3%MH#'X=96 3TQZ5#E_"I/84M9%S@@HZ(C94\_R.F
M""RII9GX&*$067CSQ/%9J,4;+88W[%'=[PF-_VRTA]XT1C];#]3UF(0*)"C5
MWSU?K^$;&*KO09*Q=HFW\(AWICW[?<'M8772Z4]&PPM"P6Q=PMAPA-/2FC..
M*VW.J$9:ZG+[%M^1[1GCQJ^]BXJ8S4Z"0ZV:5B?5MB <#V0+PN;SS9EU'PJ5
M2]EWZ SBJ=ZO*&K]H!J29ZHY:/29U#V/6*KD6QJU*U0"93\NQ2G46-,N4ZX"
MH_"C[=R 2;B^3L%R,%]#R^L;#@U6'VB9MX_4?*!?X7&+XRN]]/K"E&>5(98'
MB 1MSORA@53P%D"<NP69&P_\G9,4$%4W;*Q-V)2XTC0I%I<%5J@4\R78_P)
M;Q_M6P[:CX#9(^38 #2BL3(2I>RFU)GJ%Y R!KWZN)D&"<DC V?B\NT*D)+'
M-E 9*1U1=#E!XF?6GF5A_-V%1\^4?TT01\K:*?E6-QXNF8.>O\\GBF^R5X5<
M*UB>[3R_-]R9:;LK)^':8!1[;5 #?=Y.+[_97FI Q9A?28:!">$B2>A)$H1-
MJI_!FA88KF"X&%L11@G9<^)HCV%\ XSSN#!F"Q9+A"'+#D90:!Z[S33M1QZH
M,K-==D7O1PZMXS-<3[-TS='Y-WA81CCB<NG83\8]"VG*%!O3,BPEXS?Q(O7%
MQ\\?O[]DC]X,!5G"]VT=E4-8L$,?#/KHLO -(Z0,BWJ"];7N[0=8C$)T#262
MS@*N=& 4'J\(;Q@>O7?9V["<!T/'N 6\L<:K<!>O>AVJKV9 BA6LF7_9P,LP
M=GN'GP.=#(?1%E16?L5]#Y)*AB&L=VP=U&%L8Q<#]N9;@0*;L1[X(YU%SNFO
M1:*HO$:OYQK]9K8 CC3I]WDH"*\YB5.NS,?RREPLIV084CT: 8'*OD /GJ;V
MXAY6^ZV@F)=W==ZFG\-=L)B[_I[.6-T-TE-/,HZ""QP927%2 E2&530[K.(<
MQ/WY8;1S4A@5_AIK4Z4NJE@ROZ *[?;42ZE>H;:.0)7@-B90V[52PGQ2+H &
MN:_)0]OZDY.WKL&DMCXLHB*G]@DT";HIM4)+AZZJ*FJW*RIVA8\X*^<DN@K<
M\LR[;T_AD*8NJ#4S>IZ'4EG57*N3!?E7D%;X9Q!7H/2P0P_CNUA:WT\*JWC(
M6W-_W&]L$=$J"O:D3%1RE$@<-<Q=S+)(CNH#1PWK"9TLD*,:9D;6Z=\,P:,0
MBWHL+SU0 :H[\65TY*E&1P[C*GX>IB=\HUY.TUA5SRP 4H8P2R;-PZ2YJW@>
MS:1J1QD/ZW$"R##E4PY3KI=LR&STB=72NJPC^#?<.=UX",*I?GQZ]X_M4"JU
M$XEN\@.>$@,I>#37QHC??GV-'W+OK=C6RF(O_=D#4XL)\MLO?V9AO/<&8@_&
M)E]  ,XN@C,6B$OX:6OJ4.UWBV5?O@;-^5%[=K-#=(N8?[[_N9^8#"IKVD0&
M6,Q;COT8?D3>:F3AH-S^BV?/+C;,BZ@8S(>ZBTL6FH?V M;6P7H[;U]IX;2B
M6[%^'7U9*W>^BK)G]'7T@\1DAY)S#=8I!M_G&-M++=<WZEE5P&O;]=R;A>;0
M=UC=[0<O@^7&AV1.&I2.,-E*1[@!V/YNL462*!UD<L(O"V17M*;E.O8[O8XE
M+S=*OMC67>N6.O?DLX7"&9/$?YB:I6!4.&#1POR%%WO*<:Z'PY^^5#9J;"Y@
M(%9"DM>=Q!#^.T>S/!@,-I7PNI*X1/8G9CF 5L@K';)3R"4O;JY^NC"J0UT/
M& ECV-F7=]]A"BJ,9<,#'?Y6BQ<^U!XU1^=Y!S/-7<#D@]7R3]KDBG]C%1(T
M\X()JU>GP4'Y9-RO[@G6C67U2#$ )ABBY=)9RWAJ+0Q=I];K0-T>75R"Q'S[
M"K]ZR=/S>96]:.E%1B^>DS&+H!__N#<\CZ;.=5U6ST^X@*']A!2LCX8) +9#
M@A)ZZ/3!PJA(##@%39-,,1=C^F\Z\_SL"Z)YGF98P=?=)>P72\Y84H<I^WAE
M=,_*Z[)D H+./#9?__<X>W?NVQ[^ ]<)(NBN-&:8/?.?E>'P"I-LW[SDY;.)
MA@5[R>."<@!@#DDX$[9+4TIA0K.%01^H7_$4IMUR48@2^H0]TUS*:_FRQ44Q
MRF:!6.0;@N4T<X#ECEK48:DTF38MM;BJ7P,7M@@+O^#&^D4@L>*CGUW$"C\R
M,A.^2GAIKQQ&/=L*5FAMU_KT07?>TA6.J@_W2]-^!HRQ,XC\6#DSD&A<2,KC
M)S;I*!,OI-&5O/AP\^/'2^Y^=@F%N1NH85+_-RQ/;!G\0@.(.P930:T5"Z5&
MQD6HAWE-.U/< #\KGVQC@5,4ACS;#7/V-)ZYMK*\L(@*B$G'9K)&7\VX4(!'
MK)8XH12ORFC+]9F@_OV+G4&WSTO*FC@B$7::,@*AZ$Z*3J@"1I6C*P<X^(X)
MT'?/.UHB>]1[?WT?X<3YRL3%#Y1\WWU:8%W,T)73ZF;TY73!&-N-0T*ZSOPC
M@Z?PA=L:%>I*]+!9(A9, X0\K_G*Y36299T\B+$)&0[:$<S*-9[\@[8%F^_M
M[#FO*8MR$MZ#>84(\R$!RA!^.4UL?]6> Z9,E]U((60#/%+2!OQF/S $9!W5
M+ST.V,=:X:#?F,^@VO#C'N:/U(^#NQ+A+3PC&#=%F<SG)^"*-)@/RH?Y=#_,
MI]LP#X2+#^YKQOQ,[OS@H,P%\O%>D*\S?A,/Y?W2R3^:LU7#]QR-8537GH/1
MMP4;QO+P(4W-]3+\XB =H/BPY_H/.= "D@Q0\N$)7U.I"=Q$C*T-+9UR"I%'
ML /_FB8\1O'"H[_M(DFMHP(: TM=CC\2_=T*V7UX0"6I?GNW13$!PIFX#A3C
MJ8L;QRRNLUY<I^;%]=K#G<5Q3 4K#/JRI,@A4)(H]?L]X/GJ$N8^R%4<?\^Y
M&&8[*!M'G;)W(\;9-+':-D+MQ.Q$9IB-N_$P4P6!V; ]2EY<!H0Q#6X;7ZGZ
MTP:TN$6= 5IQ6M1YB_?@#"3?N2]$'GBW,<TVW-4]UH7Y+XP7]1P1A/H#ZZV2
MJ;W1D3!GOQ6\=D=P:9RG*]S@M"^,"Z_;$2_'&3O[W'SEXS.YHL>X4U%%#[:[
ME57TZ+8'VR4]V%N-J.E1>4YO1>.7G$:;+$:C3I;2U@PG:?"<:8F/$2T=6\RL
MZ?]AQPC56R=5>J/I D *&"E@3D3 7&&1PCLJQ8L([%\[1L^L)LF6Q^"$BI-(
ML)X<6#\$P3_LEO"DT%I:#J0_F^'X1'KE^:**V"N/E6)FU7$]$JW11_C5P\FU
MBMCWJ)Y 7;7ZG5Y<S8'=-"7F^2HL6L9'Q_<U.+ZM>-B"?Q72R7@5\OG;QXO+
M;G>B#'J"9"4*!+2ZVL:)!?!^YA( /ZA3-LP#+XEOS 0G)3LH\X%_/&SW=^\Y
M!8!^V>50"STJBZKT\XF',U=UJHE4U.> "90M( ZMV05"XN!@AE(D!8./^]GZ
MP<+%-JN '205!B-ETJGG1&PF)&N?@( \$1<"LR_ )_<9ZA[$&L6?HVIWW%;K
MKGIU;.$\,>S.H@[38%?E<2JDZ$BNNP6RHU?,>8INS\^NNZ+Z>Q;OP[F??=>-
MAEV$4,EI08Z5R42HX[+B*G82[D>=E'V13LJ %TH\+ ?C]F@L$KN<O>'YT7;F
MU#A3T[.LZI?529HRJE^"7,J615:V5>MC$U/' Y&4T]>E#/J[8>]-P9H\T@5@
MM,Q'^E"D(SV&@TJP@#MJ>RALVX.SM( 3;E&W<A0J/_";4?.ZMWSR2P62J0EH
M:=!Q'S/U-%F5K5>*T%>X_8DRGM3M?BL<4;4?K'5V9A'P4(_KS%+L25[G5?!D
MW!X+Y<0JU2K?0GX]?YZE5N)#E7>,KU\;J5T<2D4DD*_9^M>4(EDCH#Q&$5'5
MH=(?U-U 2RHBIZV(#.)BTBI51"+L4D),FMKN"7X]<!J%XF7.OU!%+*)NFJ#2
MZ;I(J5_;]H":MN/A;DW;-OEH.^L:<\KZ07XEU2F=V?=A!5:FI#D:HOR9V ]^
MC=6@7&U0LNYQ8<P6Q(C.5@NJG+$:NEDF.[JXG-LK)Y@MUG',\*LQ5EU[H!MK
M5& 1L&L6H^,A1=LT^ VLT=6<YXWBJZP<J[)=?3<@8K1<'*N=B\\-BN?ZW_4K
MRW'JXQM3&^OZPD-TPX$Q;2>Z%2$58S;#L,A\99H%+NS,"^H@YST&V><:/\0B
MU.'5 L,R@<$>L=+-C]2A(>.L*\KLK;-51%F9O67<)I7&WQT3?L<^Q!*G'X'4
MV"\O;UC!J-W=C667\";;U9'"FJVLB+CKKNY]5*^P:*#!)<L[M Q:-[,%=IME
MA;AQ@'M;IR9C!RVH&AZP1-4,D+4RW0D78#KQCCTE%F"*RJAH)&#8KO-JS18I
MQ9C4U&),>2LP92N-M*&2[Y@R>?=CI^)37 6F> ]DD2 HL;\G.D7+3B(G:^LT
M.9]\*$0^.9,<<2$GX1I&?RLI%YB]P6K&(]@L/.C->!D6%3X\?WQZ>6,\D:_\
M_/C SH_@C.#9XF5GC/N,':5B\K9O._HE Q7!0&(49-C/0&+R#]>DA&,5B:5F
M8JDC():RBMUL]ZX-$L[5(21;/8^?AON[-7<H^J\ 1-3UT*N8WLV\F:4.LES.
MEBA-8A@V_2HI7T,<W_49L9QXXY!__42'$/O.5\/")FSE]LT)/481<PVQ]A&@
M]ME'VL]<S7-Z%Y>=]KBS6R6]E=QX!<B9+7$M#SEY3[NFDK-_<:FVU=V+\;\)
M4&I"BIYZ1$]<VMMNCX0S%3V#@T5/7,I!,>0\ =$3D_@C@N@Y4D'="G>4"FIN
M!16;J;#VM:8QI^0%NT=^*=73*L^( SS\685888WKXJ13 !ELVJQ>;(CB\89H
MPM"%U_K*05!AZYWN8#M42 !)) %>'\#SG](U 7RH-@_@TA<DVE'[8)L 3^Q%
M+P_:NHVQ87F.B[J,L0!G_PQAEMM^Z _:W=V(Y'1[;)BO!Z_(]EBQ%!WTA#3)
MI "J1P"5Y[YHN@#J ;MTV_U#'4+#A%:W#78(%2F >NVQF )(^H1$4U1U \-E
M+9T\&]2LK$26/"N2)-NH4ZAJ58<$>^]#*I_\:N$5@9#"2W)$/1P19[X=XU:2
M'%'L<7Z^":-"Y"@4W\.J_LR>*Y?E@1Z4-*-@>HY#]R>/#9(SS',(D5\W[[=E
M2/@SGB@9+U*^V1;FFE*=/=*]M3W-C'Y^;;O>-]O[7PJ/F=EW%I!G71MRF%5T
M#"XN!^T8]P[LD>GG.*TL)WP $&8] T*?\#4E#@63!#[T;/@RGS2)MIYW(VFR
M-% LX<M3_&DX-$NQU7;S$?UD6MSORB[+2MLAG@3XT7;\M_![T?L%@-\PY7ZA
MU^YL2T[.C#S!68QL+]PF^C0S5SJ]K&$B:R* [1+D&?WX].X?VUW>U4YGG5SD
M)QPEG6I^;M/&B-]^?8T?,E'Z)B8I;2TU?&":B%/]7$ ^LU<PM>#U^A [^,CB
M"PC.K"Z>6;'GTQ)^VIHZ5/O=TN8>/D(S'[5G-_O)M47,/]__W$],!I4U;2(#
M+.8MQWX,/R)O-;)P4##\!5C]8L.T/CY3[.*2Y:RA2+I&&61Y[MM76CBMZ%:L
M7T=?ULJ=KZ+L&7T=_:"N>;Z=7OX$F0J"#<\(WKLU#*ROG79US2!"$GZN:NS$
MX1.#HXFX>$#!4>%Y)GR'?\J2A!W_ERQ+V=26;D4E+2;CBTL/.) >5M-B,JF_
MIL4?1Q>SV"#ZFHB<_"44L:@?H/7/("[7'^QL>#Y\RPVW9,U!L#T/AO<<2=U/
MVXLBLO9/.!G_+"HC%9V,OQ.KM!;S[."[LO2M=WZ!P>!>^<A-2<WOIJ;F\XT,
ML_+S9.E']WTG:[YP]]*>8@!Q6?J%=2XIVZG:]/%+[I:>+&"#Z; 6Z66M&=31
MX#G3$A\C6F)N3&';2AR+F%";O.-!Z:26O^DEI]M6U!JIZ0) "A@I8$Y$P/@U
MV:1X$8C]I7B1XN5$Q NK]4C>L]H/4L+4+P$D3&-ANO8YU %3N>]U[3L&*!$6
MH23%DX3I<KL\5ZQ[=NLKP<7M3M^-%EO :U[=2U#\,P]K-= OD;(2I"<-TA_4
M(>SRX*2 VJA>8.4D:V2L);=SC0D&!9VQ&#;24]EE8^=,DS3*[%,4H\*E1*2/
MXR)(.RVUV^JI6Q&)6Q=\.]&CQ78D^/"?E>$]?[;@F2O6//D[AL3>+C3++P$>
MAC0>TPBLUQDIZF122Q>C,TG1B%MG;4V\#F2.86',44;3CNPL4E(G#VQ%NENP
M2P#>*<U"$[EAYR?>X>8<>W,>, 'QV@2.1WG2) 4[C3<[!^7LRCD:*[V)L"T%
MY00:P4UQY12.YJ9:CN]*NG&IO5Y[6,\A7EP_<3&L[:(.\I\[@?#R4!=2#+U(
MDT.3$SC5_\FLAR-/=;6G]-2!2!+FI;! KGT"XAWHDUQ51(0\T#?9J2RC7&VK
MNR46! '<61KF'VUG3HTS-<WQ<B62MI/22&F*G4QK=Y\?,_,T?6"2JX.+8/I
MB.0C58*^,NC6K1$<OKU2;1" *S.K#=GZ:C=!;?"Y;N50MRPG0&?0'NUV_1$$
M;F?M!(A>GV_EZ4IE8EMF]T!FZ_:*98XV3)N(F7J:=.ME+OPDF I1S+7]8*2,
M!G5[+0M'XXER[<8$:KOZSZ%"] MCLI.\_E?5<;NOBJTUG&]!Q[.H<W%*Y1S[
MG4YQI[K8I1R'<(0/VS&5\O/6<H1!6GXUQ^WR.:(4=$S8,4&*.0+X^BG%'+OK
MPIMQQ1P/9\OR*[UN5X@3JR*B'Q./=?:2J]P56!2RPL6GU8'LRCJ0R74@(Y_=
M?K_^8EB_"7P'ZQS%/T8WW*6I/2.!3<."M6%QI;2GUUIK<F._9>7)(_-N0)XS
M86W-J"P]Z<\@2A/N,T-UR"4O?MS\<E\2+#X)&@#H!W">8FU#D 'W3)O3B =S
MI!ZQF$\"W\*?@.9@> NB6<^/3'V;4N^14FM_<4@X3(>LSCVO# E*!,I2OP2F
MI:=U ^J,,JN D>4R/<%-;0JP=,SIZQ]\)B (O\]OV9*Y%^9:6R+G?I^_HV!5
M?= <"Y0+2_\GK[;Y:PDK^&+<&][A!?]5$/IQ/;(W:,+*1&K>UB[,^*1P-Z8X
M+4+9O%BMT* .*/X(ZV%:.M_'+%NS5>ZSA2H,SB?$CJ_TZ10T*CU2R=,OJ ES
M[G;4R1MWXT<&_\[<L#23U0(-BE_&C(PKP(]8\5-40XVEP8GA#^P7]83%\DJ?
M:-ZWR6W<'!"HO, F#4J>)I^_\)L1/X&QQFGJ]R9!-4]0OJGC:;"^C4?!WZD#
M^*8/XSI6/1"I&*4%K%$W>(Q;0(] H=_0]F>@S:+R'@["B.K84VW*6DOYT-FB
M=&3T1[ I4-W79@N#/E ]"R'WKJY3#'G697'#Y8&X_ U,<!1YYI@?_X">'>20
M=?E5X"ESMN*CK%S&0.0K2AMRK3FF#60UL)XBN;=U:L:5:-\0UG]LR>D_"LH<
MK/\DV5.A=;EST,@2K=)U=;A]6E2)UM A$%$)F-<@:Q'6GBS">O8U/"H:7Q8Q
M.\'*%F(6H)!%6$44 %+ 2 %S(@)&%F$5C_VE>)'BY43$BRS"*I8$D#"-A6G$
MZ2"KL)[3QLLJK!*FYUS@,D,55M]7&DTJ*W #\I+;6QB6K,UZSM#-6)OU).#;
MJ/2Q.BNV[L;/R)*MXE6E5#O92[;N#Q$Z("6%CW"U\A8V7H/KORS@OTA[^A^F
M9KD?GJ@S,USZPS%F]">FL/ (H^]S_Q,69\3S4W)FG4R4R6 H8M7)4V&'YE9L
M53O9*[;NYXV33=H:"LD^PAMTLE#K69>44+=C<[/E_11Z!@M3JG6@=$:R4FN#
M)B @.^6JU"KHL5U)K=9NI]<>]D7ENM+L[(T:"X%+@FL1D_S92GML[PU736%D
MW(A];$V6T48I-91[%<A^$<R.R%6]5;BC/EO]UO]2Q]8U=[$M;X@+._%_+UH7
MERT1[07)&75PAIJK'*N@IW9!!5F3&$A,OBG-SC[Q<SKJ'I\M$'ORF*Y;&.4J
MJGK@,<TR9]D[T_TR:'JP#(K,YIJAZC2DC&2(6A@B5]737*=SU6PA3^=F6]'A
M_PM]VM9)K8[9#"JON%ZE^Z_JALRU2;H25YI2J5U5>R=A^Q=4J[VOJ./]+L?-
MHJB5B,TRPX>JJ/0N=9@D_NN?D(>A_-KMDTE[<% #XW*#^N0E/[_DCPVFDP7<
M90%W7\C%!?%5H%D($L0'/#".*0O6<#">*-,VM'Z[JL8% S9*>R@]&'#8::L'
M*0_5!Q3("NXG70:KK&0'[G,:M;OQ"XJ[X(FK^K9T[ =#AUFP>HVNN[KGG$E6
M01%1>#^QA!ZKP<?K]/DU12LL$,?J!F:I8O@ZVYY45>X/F"BHD.RT9BL7-?V4
MI+ -#O'1_I<.^U\<(X0?1;DLX$W.?P& A@ @Y%V&),;$,8Q3"XERUX[C3ONP
M<%R\;YZ7E0_/HHAVZ/XSP//5FA52ZLKURZXKEZW@V\9>[VQ!5L$34[E.B$IR
MV?T]!8X8)FP."TG8/-SA]SK2H''S<$O*H-MZ\)OU$]D#V9\/FF. :@7<!2J4
M^2:R)']%OFS(DF.9ECEL/+%# R3[!R;9 ^GMIV,6D4V?K'-M>'X$<\_4"^9B
MLH]/$<RA5E$/+N6VU[;M'?'%T>&7X4?,.I+UG2M9.TD#";:-^/N6437\:;B_
M6W.'8@5ZV%SJ>L1A%:.*<2Z7>F^5[Z:J4'Z,8?A4GU*WI(BS:*N&H_U*H5<H
MHJ4C3CX"3#[[*/D)(#F\G4/_XK+3[I;2*3C_=OU-XKQXG,<%DG76..^</,[5
MDGI;9KLS_9O ^GC]A]Z'H)&?:<PI><&:T+V41][QHB!_>\-$UH_A]3P!HW&\
M'L#@ECKW&\T,U6XOO9GA:/L&H=8#K$9TG0%T\Y]:]4!W3Q_.G4:<E9U)@EMF
M0AU,#[8)\,#^5/)8*DE#'334$@LP\L\0(OETU-[%Y0"4U%*B:*0Q)A34APTU
MQ@J$>F_<'M4&=6F/93SV= .C)2R=/!O4+"S[1LJ#+7E04B&JRN3!>Q\F^:1!
MJ\>:Z\I3[\11'E<?JDFG7H-1OG7@-2P&4XSPL4Z6\+'ZXRXKF\$5Z[5^6 RC
M@H&2#B6/FDO^FM(V72VR;?JOF_?;\N$#:\--Z0UU'@S_ASOB(HS6Y@%TM[:G
MF='/KVW7^V9[_TOA,3/[SL+\BU N#+.*A0'HPNW=&S@".V3Z@:8KRPD?L-DM
MFC[AZW4K:4 G#-+BT][M:ZR0QX4Q6V!_:1JH>/"3*0X0/L &]99HY#'HMJCQ
M&/6@V3GN>47.Y=)VB2?0?K0=_RW\WH;7KJ..4[UV_6UIR=F175RTZV?-K;9?
MM4XDV$3"XDX)G-:S!>PAP<RDNJ=7_T[%QZA3%[-'XF/4@5\![B ]/+K=&QY8
M$]_Y<//C1R0NW5^D\,'I,LNC.5D>!38[3TBE"D0_"HU 9J#(.#!B?="XB/7M
MD,!L4>KQ+JDWR3ZIG<=DM2>/'"5/H/G>IS0E,)/]DQ(L/KU<_W]?;.9^HAP>
MC]D\%!T0ZGM:*.(G;]6 D1M8Y 9VA.7X!%UDZ_[_"+F0+>QZ_S#'W'(4$6J=
M6P"6-N".GS</VQSLV\U87QLUN&^@"#(O0**.Q[T!_V*5*M@WOQJ6<;^Z;W#T
M::?=V6W20UHDA::]C*'I>6FJ/36>INJNWRSSS4T.MJB<ET]#./0RQIZ?L7!0
M1X<*A[BB:@72M/'"08VKHE:=<#A2S]H,.#G*_JI'M]J*Z.>>Q<-"^L]0>AYR
MHW((9]<4^MP;QEZB,#!<7 [;G4[>V&=Y>%<*OR,/EKK@-Q$6?J*8X;4?#SGC
MZL^0.>.TP'[))F)=FG51<<:@!PXZ[?'@0.6ZG[%B>-.4ZP+).ART!SUI?#=
M1)1L*)Z B.AWV\-=+.\1$1E3.,Y81 PF[8DTP070L8Y(XI!"E'-[QM;&AQE%
MIQ'!+L]\X> ZB#,+CK;A)5SSG#\-2[60@9!928;\1Y]FYDJGEW5$5H>[!L=[
M$)WXX].[?UQL [O368<D^F&*2?#U@R,W1OSVZVO\D(GQ.IE#&X,'I@4.JST>
M7\QG]@JF%KQ>H_5@;/(%!.#L1E*%-H&XA)^VI@[5?K>TN8>/T,Q'[=G-#M$M
M8O[Y_N=^8C*HK&D3&6 Q;SGV8_C1QF>WWZ^_&-9O M_!V-7XQ^B&NS2U9R2P
M:5BP-@R837LZ/$,C"P?%_E_@8+C8T&/S5%W>1/;%)8NFQ<CU:SRP+,]]^TI;
MKR^RWYN;OWX=?5FK/'@5%0C1U]$/<)YQXA]W\I(MC8_(OQ>L[/AXZ_>&.S-M
M%T[N[_.?E$'&F(,UQ$[I>\"Q%Q\_/8R-GZZ/T-/+;[:76FI?Y7D&2,=N1^V]
M(5>SV>I^Q?.C6!%T@BJ*0Q>@I1@/E'RV9O8])2^^V"[>4)Y[1@HGT6R#1(9/
M(A-)A-EC[&,#TU& <T$; TEJ^>)W]DP\T/I<DV>H:?J_5Z['NJ&P'!&+>BR?
M#6:/R69WFF&Y?& *0Z,>R]*Y^ \,"^8)PQJ>0=TVV9LLP]MXL]]ID5VW]RYI
MJIF8C.8>DC;C@5BDF9)?JDVP$0F^NQIECW6-?<JA4&X>VFKBH=T([;'P-)H-
MF<9%&@JTE-284=FI,1O[EEMAB$V "50";ER%ZD)1A5S6RD_AA<JK&KJ&A@["
M5#E/^>@6A?9&^DU2BP:)@5/%P'8"5HT(X$XB*;^$P*Z8R4*Y(+ZO_TRQNYB9
M<!)'$D<EX:@1DC0&*[Z2/.BFY,'E ,3&]K]@?0WME0LV9#0(NW(>E(UY4LSW
MN'Y,XO"7Q(@(&(EKWB0Q(C$BY8C$R.G(D4-UN8Q="0I>X/Z.YW$/+*; 9V.?
M/=FZZV8!">=)BG-]MH3 V3];0N#LGWVN$&B&GRIA/3MWYNDY"-LWMZA\ON.1
M%D3SR)3"#RP,M[#G?G7A=&U4 -B6\^R_"L,M+U+"RH>3^*+<O59/_=>-IWDL
MT/O#?U:&]XSA"+:%@3DLN#P2@\7BBV*B%;*4[6:QZ0O;!,/"Y<\)P\)[V:/"
MB0LTA%<8*Z9T)KMUF>H!P4N)>S%Q/U)C<-]I,NXGRF0REK"7L$^%?2\6]FJW
M4;#O1V#?4_K=A!8L$O82]C[L![NP5R=-@WU4VH^4CBJFM&^&HS=[D-N1&=UQ
M5M.$._2-RX\9H^QAHT\KBE'LH6%G@M&-9)X2=/+-'%J27)+\](=.)OGYNA"[
MHXPI:E.*26G8U6PCT]$]4_^B8"[Y-.T[H=)*?ZO22F9%_':M)5V%2E(6+?S[
MS'C'4+2=+NM^H][W^:WV=.5YCC%=L7RI6_N'AFEL>0S4RZ[2Z8EBEXH/T[-G
MD;A>"YTUBW1.CD6P7?RP+QFD <\6PH4S[F0KUW5*'+)V]_25<4Q?#!'</8)A
M5?))QCIAI\DG766HBGGW>W)NT<,&WNLB#?^OCA/\I;RDC1LQ *E.YHY]O[<N
M"-J/%5B)%<FH@@+U2Q-:^6/IT\1:7+^A6FS(;6GV$1!X9<^,:U[SA+<ASR/A
M_DL=6]?<1:)P:U4MV++MVYZ:B9+=FLAN<=7R:[%');M)=CM]=HLKZ%^+<2O9
M3;+;Z;/;0!0;6;);/G9KQG6I -;T),&8!DP%51I;/$UC?T5-:4(W6^K%M;>I
MYQHV(9 2BUL&PNZ'[;"!&WT?FW\?I8K1<&8;B6) 5\YL]=SL2E8[:59+O?+*
MV,GI)'FMYCOB_%I]R=?(DN/*Y+B$<*4:+IGKY+A:;IOS[^B)7TB7F*?S+7>#
M"YFY(TB ?0,FW\RA)<DER4]_:)FY(S-WSC":=%)TV!5H4K]"1>ISJ#5] HT*
M5791XTK[NTW/10@J%0RR9\$N:=P2%\9QC--7.&Y)N%:N_C:YL3@]>QY)N(7,
M[:P5CD=2;T94=219I0'/%H)5XNXUCO&R"L<J#3Q.3LYM6E;DD<SC.=NKHS29
M%G=S5+-!*8,P9<SSJ3->MQ.7/U^S;2H93S+>Z3->7$)^S0:O9#S)>*?/>'%W
M%S6;SY+Q9+Z/S/>1\J^**,UN)RZ)O^[+VUHCI"N_Q97AT:?*>&E\)^(U<#E\
M)XP#7ZKY9\MM<<G\=5\HUY!S5\/-LF2ZLV6ZN"B.NJ^F3_R(*S3#]=2NL;>3
M?]9#L9$V#&C??O;-9SYLI(4IM?1*FY=6)*?VPJ<'\-'M%;#$-GYJ:/)UQ&Q3
M3>)1?+O3PX252(W QHJJ#H031<F[<QIVK60F9*9Q? _5YC+31!GVQ*M<(9GI
M')@IH1%W<YE)GDR2F6IB)K4C3R:1F&G#VH0_IK;^['\(?Z$5SO\*%OAM=0_6
MU\Q_<RM%U9]*UG4IO#"$0EP8<I[&ETO_>0MG^X$]=KOZ%*S_=7"5>HT6<D@5
MV+<[BM>S%GU#@AWH=& /%A0YA5GH;TC$K%[[R.+-[C5!R2LVN3@")= GRJBX
M@^51[*UN/%RRS>3O\XGBF^S5QHRSN&JW>8ESW:WV]-YP9Z;MKAQZ"T.\,X'%
M+CC;JY-.?X)UH"@PV1)^ZSDK>I&*GS+I\W9Z^<WV*'E+[Z/.BM?$L$"D&/@5
M57W[BMY?(LFZ';7WAO!5$E@F5@V97J[Q6/?^UC&#VP4E*'HUZYD8+G%7TW_3
MF4<\.PA1\+0GK+0"HMHSEB!__KUR#%<WF%QTB6;I!*0W6;D4?3G4]8 Y/9B(
M@7D'((\=JN-@.O6H<V]8E'U[Z=@/AHMG"0CHR(.HVR8?X1W\3LJ6>@N'4KZK
M]_#1PD57$M5]8B;_COQ]!1/H :<C#_ !< $I/\'CC'U189,**.70&8HB'7X>
MI=-Z74"+OZ:=FPEUR/O;#)IV](7L^N%I"<<F?4<M.C?6_M5AUO-O<''9:_=V
M#CT"\#)9@VR@4>IJ$LH\;]W#5K>:;GM7'^;H\)>DP ZZ2P ZZ!KF<YM_AJP0
MNYF Y:GF8JZ,Q5 0H!RWWUII)J'S.1^+_="!CQBP\;O/5'.(MER:!F<$T'%:
MG*7P06V"#X6Y '>YX6^R07\/<EWC:9=%TGZPR1V$_=BA<Q/% :_ A')@D_V]
MA>81S4F=LF5[?"(4))B!*@Q;)]!@RK?81;IJLQEF*R'C/&CFRN_,;IKV([J+
M74ZH-9TC^[1![HJDQJ/FDA2&Z";TT$MF[Q]PUFYSQ(=@M2%K_(2E7L.XAK4R
MK+OO2^KPE,"025K=C%S20]$6PR7HC9^!PL7"U31?>*>M-*$+6C+KU[!2==C>
MK1[']SU8KL$YVX5ID2!L;^Z?509@"]EX&X,A^ ",#F4"8OJ<2JQL13X2B+5T
MS.D!E/KL3^H]]?\+C&O=P0IX[&LN0O;:NX%= 6(X/:OF0[ 7-Z"ZO8F&M7?<
MR!$/>PV*%RA51%]1'$[#]3/R,81$919+I,3'X14J4!;Q H+< ]T;3P87[=)0
M/:)/0"2#ZTC\$WO)=JD N18(>O^ *UNT92LK4#/#CV(8_F#1EE!96A5*M$W:
MN]Z* D5; /^]HBU;:6!A1=O: :2VQ\?+N*)YLFPQ9X5G6%ER3EK9>X7\WBT\
M4J7GO]4-F(<3V==?[9LVF5,=N,N$@31OY=G.,Y\9;&,*T_<2])DBSH*?8&%;
M,\,T>*UB[R.?X$TPOXTO'\[Q76 (M;W;IR(\)'S.P% 6>P74@L]M![88]LY<
MZ8P/N#R"5U'W"!*0,G[ XAT ICB'"6P\<)MN^#;?X\*8+3;\"_\!JQ+K-4B^
M6=-DH>FL-O#,OK-8=> -,>79'LP!-B/-4='K)=_]I7LG?D4>#*#SG1/NX=Z)
MX<7E( YWH:_%94QWN!,K==W]V&L:M=OJJ16M>W!QV8\Y63>\,GSQ^T](./?9
MS1#IJ8P*P;D6]>DHZ#Q 4C+F KZ=D_5*%/)HKTR=:$ST1#F/>XDG;]P898@K
M25$7(!L-W2(>Q2.1[<.26IJ)%:GA&[S"RJ8O%6CEH?PU-CR'E#N]%#:$0Y>V
M@YB&QX$ G((4])[Q!_YM" &98=K670M]JAON4[+4GO&6!RFI+9>.#4<]SEQ(
M*;+QB"**BE]<?K=26>>KYH"@53EJX-\,-TCE'[!]!J;Q,3V0HD(%NV9JCVP/
MKG[^(%<S#S8'B'-GL/KY@(NE-ONMW5%??!LNN0/N@#,*]*HL[C!\$LM/M;Q
MI?.Q]8<;[C1B8V[;'NRC!318V(_T@3J;SNA'X![&WJ G<W4.G75N=.K,PV;!
MO^]LE)%3S37 ]+PQ@/::L^GMY$<4SUE$/^?*A./O'E1#.+I=$,*P\"D%=?3.
M@8D#I:C!ONJ7G@5D:G. Y:&.1K N9M3Q-,,*STV<!M--^)&Z<8PJ,6=F0 $\
M"PCE3D1^$J/[]9F) .:(G2&'",(2*+3I$ZH4]+*.^[.0"+KQ0%C*-"AIG][]
MXV+[@IM=K_KWU Z_9$V,'.;WS1LC?OOU-7[(Z.I0\:).$NLG28HP&#KM$K#/
M><Z_"0^N3#?NH(^\<NXF7CDOX:>M*5A7OUN,-U[#T?2H/;N9+Z.WB?GG^Y_[
MB<F@LJ9-9(#%O.78C^L8\NAGM]^OOQC6;P+?F5'3C'^,;KA+4WM& H/*!6O#
M"^*TI\,S-+)P4,?X"UB%%QLG0.)&9T8VZ(GLT(/3'MT%&&+R]I46"8I8[_?F
MYJ]?1U_6*@]>105"]'7T@\0(A9(#!&[H'<;S_&3Z"1PD^^($)DV*$^ANQ0GX
MBR7A:F6PP&V<HLRU5<: +B>9RZX$-ZY,F8H,BK'_;51"5KY7,5;[OEX8=$X^
M/-'9BNE:W^>@*:'B\[BP4=7"'\W8=]9F.%H;[+[V7OL-&LB+Z^_OO[Y4(@K1
M^JOP@IDM+!,%- 3\1?A[F/[47G&S &\@>041W^]EKYSP.O+:=F QJ&7\LOPO
MLCMAG?Q=@^40_/L.?2G<:0 4!_9KQ=!+07W]$>0M_A<>0IF>B@/IH.Z9]I(!
M$?_V54RNUNCWAF6XGL/5T9GM>OZ-;%0MTFUX;A9]-%@!B'>P;3S08M%P\:)D
M"^8KB/)4UPP^(YAG/GT][*BE^=Z=M6>5&W_<]F/?1N44:(=[AV8E6G2XB6N%
MFIJ@CELAA)"%?'FOKYUU'#SX%5[<DP.1^_0HHGE*O4<<S;<*V0_MT'/.+=2-
M$ 1_IDQK#E1OK@+-GEN!"<L;,>&/_4@ ?!F:O?Y -B+>70#CLQ2OX$MAPZ9
M:<\:+[!F*9C:=.4"_8")0PS6CX/Z9_ 3Q ,:?9S2L3L^?8Z1T!L7&7L=+I4%
MG83/R'Z; 6+3\5>@H3<5(T;<UR*A0N H5Q'(<[!2^B_0\5GV+0/X9X_>\X#R
M[\$QY2MN82[S=F4PQC)8$.S#$U=*KE>N!ZSCN.^>/U'[SM&6(*>N\#J,V16Q
MNNVD$ZO;DK><S_@>_M\+# 2"<]TO>QW^[2ZU6?@WM[SFAL6>%F]RY;:4MHI4
M(>Q '>:!X865]RJ^K50Y(\+2@/(6<UO[HR?Z'ZK.'2\NWSJR)']%&QG88 NE
M"-:4CV[Q&"!?N63_P"1[(+V9*/;_-8WT82PF.SU'^KW$CWCXN3&>FH(>ED8C
MEGB,@89_0@RZ?RNO7L,+%CYDKUS0RJ*5"DMFL*YDL&3-5Q6*5R00:@-"1P)!
M D%*! D$025"1C4J8\VKII6Z@LWRG0VO2]B0"EA.R!&!JL&@TTNQI]J$$24Y
M)3G%'3&&G"*:YH4T?;^X_&49>-O%ZJ:XL<=%54T8JWKD7Q.>)D!7T.XP6X[^
M@=<1ZZHX[_P;S>!S]BL. 8X _X-L[4["2PV,@,+5_(_A+8*+C<]!TL(5"X1@
MH=RY:A]/!@J0)KX\S@G#5'+&)F=DJ_=P5IPQ'BKC[FX-C5.'J>2,3<[(V'3]
MG#A#!=;H31)JYI\P3B5K;+)&MG3Z\V*-$9P:DX1F277@5$2'74'&U8>58R_I
M65A5J8\40A8D5(LHU;3B !!0"G3[RG"04,!7",B<QR.%8(Q)#9:5L(RA#I51
M5Z#3\4P?*0)CC!(JZI5J6 G+&/VAHG:D&Z[N1PK!& D%&$LUJX1EC-Y(&:B[
MI=]$MZ>:>%G%4AQ/U9S"Q)IU1LQ32O3+U(0M3;S[K$!0'#[5-&F2K4)IL=*$
M(4E$8:)TDAI9-P=ZD@L;R(5Q_>3+M@(%YL(:[M4D%THN3(C_*-7D%)4+A\IP
M)+E0<F'U7)@0:U*J?2LJ%XZ4[G"WAJ;8T!/Q2C%[#L"! [,WTFI4AO_OCMAC
M;[%L+7$X?LJSILN54D>W0A2\ V*:>$H(^#G.8!9#VJA=M("KDC<9=R..=TO$
MMF2<LA@G(1SH.!M7$,;I#)7!J*H;?<DXY\4XV3JM-))QNKV)HHZJNMB4C'->
MC),06W.<)2D(XW1593BNRD%3$.-PR]!O4IV[/;4LY2<P>8 T1%MY=@[Z3 ;;
MY(DK]U &R<HC4.X"W*Q!&F]YA+)DW0IMNV)A2L%"M>R"A9O= ;KMP=^V1 !_
M*[J_\0X46=8P9VD4698NJ32*+&LH\2/+&HH8CI98UK _EF4-SX?!9!$S"00Q
MBYA)($B)(($@)<*IA#044-;P<Z35R-H7(:L<RCIR@HXHR2G)*>Z(LLKAR87K
M9BK+HV[W;*TC@70<=RTJ:)G#\&%< ?EBN^[AUZ5]T"B'2G?<$2=-]'0?*33T
M)W%%!02M8U@(]'FQF5X-68UUXU!"?POZ<64#!"U46!3T^V-E5%F,C#@XE-#?
M@GY<CKN@A0@+@_Y$Z?>JSQR2=09/FLW3'RD$K\=ET@M7:+ H+A\HG:$\WVI_
MI!# CTM>%ZZ08&%&C=(=JA+X=3]2".#'Y8L+5RBP*.#WE.&D*X%?]R.% 'Y<
M)K)PA0"+ OY0&78%*IE\PM<UU[:SM&'/*/EE::9ISS2\O=$LG<@*@ >4GBE3
M1!P^UQ=I@B0N,UNT&H %R1'BPF; JXM+=:!T>TVH]O=2,MLI,5M<-K=HI?Z*
M9S8PV :2V6*F)#FN=(Y+B'<0JJQ?08$.:X[K=155K3[B04".D\=;=<S6ZR1$
M6 A5O:_PXZW;5\;CZAO>Y68V$6_C1"O1%Q_R+BOVE2F52JD#T^LDA+Z46;*O
M*+>76F7C%UD?Z<P8(R$PILR2?(4Q1E_I#:JZ I2,<6:,D1!%4F;)O<*NQCM*
M;RA+44K&*(4Q$J),RBRI5]C5N:JHHZI:A0E5,2_K.LZV %R5-?.JGP&W9TW;
MNFN9Q@/>Y;HN]5P^,<WS)YB<CA_6-R)AA09V'9SVD_=TQEB; ->1,)^?/^J1
M.A3F #,U3?L1L\CKHTVI@![O%'P\14#GKG$8"/@O@,PO",PKALOM"H=N2HG#
M;MDE#J,[N5. L#"B!L> 7TF1J0,;)P.^(T2YP^SPR)<M??#X!9=3R;I3"6[*
M1"8L>A[[2JALE:0[LDR'W/5F['KTU*UCYTN+BO/%\+![@%:^?^HY[A>R(B4M
MQ*[8:H3-XYU-XRA6O]GZ2F"3[=QQM=@"7O-;+D&9LKBR9GM)71YASTV^GQ]&
M"ZJX)@A&:[_A%OGT 2PD^ 2.K^@FG*H8(S[*LHC+6E$AU;?J7\99;$SMB2%[
M983(5;WR3KZP^YZ\$TB\V1D>=[.3=SXI=SCJ5HB>(5KYEQ^88N9XSS],S?*N
M+/W#?U;&$G_\C7HYFR5A,&PI\7F-!6SM$V@2QZ@Q'--IJ=U63SU1CE$'RJA;
M2GA-$8 57KL7L[9,8V5%^@0$%!C=JH[8@_.QBQ45_8O+84=1^Z4DFIPH7&N?
M@(#\TJOJ@*V97[!FTT3IC4NIS%;AR=I\\[706@9-$A1%YZ95)TT.GWF:R.E7
M=40?FIU6N,09*MUR2D'6B#K)G"?-G(.J](':F7.D# 9U>Z:.0YWPQGA]5VU;
MW9"CZ:5?UE=O/.RQ*EVD2L%6W+5Z+_'VEX?5IR57E"T$*UUEFM0<%J;25.UN
M'(^5_J24I"6Q=J\RUI-<?K)</BI,-ZJ<R[O*<%A*!I98NU=\!I=,@1$Z!:;Z
M&?RD#]1:43)])DO'UE<SCYA@W2 S$F]!]^9T>0N'TDRI7*[QQ+]W;[.6]Y2U
MO#\\76SOE,(81(()8GYVFK!98G["T,)IS58N6B[!I#; [@/W+QWVOSA,AQ^%
MJ<#(,0&?<5X*UMG#.C4BX?[HU*_WAJO=W3GTCAU8W^<^K%,ROGH597SQ?=@Y
M1[+2,B9;3(C\K>*CY Z)YA[*EM<)PB_EHUL4U>0KE[X?F/3=RNX2J%.VQ(]P
M^+DQGIJ"GMIO'S-!PS\A!MV_%;K_&[M=8()8]>DVI\A@Q65Q-4+22B"4GRHE
M@=!T($B)(($@H$2H_48VRRZ7ICK!9OENA..S&6LQEX4<L9 <Q*8N7I)3\!$E
M.<LFIXBF>4&AP)^M?U-^S?K5-G' 4VUQEBG_;E)_:\->-V-'LA_\ZNN[<T.=
M!V-&V65WN)W^;L*78*_A=99+;U]S^.C8]]<P 9S;_QC>XIK=\5#GLS4S5S@H
MQFS!/_JM]I0O"V"LJ$.!^K.?[B.%QGG&9F -QOE(&4^JZE\@#N@DSC=QGK$%
M5W-QKJI]9="MO@50W:B30-\ >B]C^ZN& KV/0.\JPU'UC>7$K050GF%R_>V:
M?-5F"\,Z%Z,D]9%",'C&7E*Q# [[&6[G1\-QO=DJ4])158=87U4&DZXXK'VF
MCQ0"YQE;0S4/YWT,1%=&0X&.L#-]I! XS]CIJ7DXQ]S2L=(M)ZNJN: [5YQG
M;-S42)P/A\JP+Q#.3_BNI/>>_' ,RY,&B2B,/3C"(&&AY>^##?UH6!23B(1A
M;70WC!55)&_#F3Y2"*0/CS!)!$<Z;VC;[575GK AL#M7I"=<?V<R2L1'>F^@
M]#L"J6MG^D@AD)YP 9[)+&D TCN*.A;H]ON$[TIN%I1ZY"OU-%,:)D*P=L*=
M?R;#A.TFVTR1V+FOC,KI(M!<I)TIN/L)]_R9;!%1P3T<3B2X);A[_80[[DSF
MAYC@GB@3:5O7_D@AP)UPL9W)XA 3W&I'Z:D"Q9*?\/7'=V]!'>)O[*G:&047
MH2Z3ZPNM.MU/B 7(9+$P9/B?9"JO6)E>URFEC5.5")+,U$!F2@@XR&0A"<M,
MJM)1J]<C)3M)=DJXYL]DDPG-3O)TDNQ4/3LEQ!)DL@(%9J=Q.>6U2\20B%=2
MU=6JX;U G++MR7+%R=X"3CU  "^.OEVUJ+I<OB,FF29'LA4J$$0\='M*IU^5
MHR@C>>.8K42P2DXHBQ.RE3(0A!,Z0V4PJBH$27+">7%"MF('8G!"MS=1U%%5
M(4J2$\Z*$P;9JB$(P@E=51F.>\WBA"9W%ZJA44IT67]L+>B/K;5LF7(1LRU"
M+D:MZ"*1&^@30I)>EO_<-5EUXR'H:/+CT[M_Q'<S\<'D<+HGFKJ\H<K&B-]^
M?8T?<F\MX&T+.08B_(%I+874 6\,Q&?V"J86O%[#Z>#65'P! 0J[$11NLN 2
M?MJ:.E3[W=+F'CY",Q^U9S=[AZHM8O[Y_N=^8OH['- F,L!BWG+LQ_ C\E8C
M"P>%YU\\>W:Q ;FHQ,G'TA>7K#L.L><$I2_VCGO[2@NG%=V*]>OHRSHE#I.!
M(3=&7T<_P'G&24ND^25;&A^1?R]860T+PRK4&CM?C>X%\0P/GXXO_>U'>:!=
M8M<_TFV3KYH%P,5^?3#];D>=O'')>\.=K5P7CVGL^G5E:>:S:[BXNQ\-2[-F
MAF;B/NN&%WSG)W57IL>^XG<1M"TWK*M<#R$VSY0Z=L*XO%U@LS5L30:Z!]$W
M":M%"&NO'#(/B3O;(*ZS)JX=$I>X"WMEZF0*N@#5=!"#^*M_KRRN7SV"\L,&
M75D:*#X>Q1KM0=='^&/]+#?H?.WZ#S/9%RS;@S5KRR75')P[-5WZ")*6$M9S
M!&;]_U:: X+.?(;=7]J.1^"Q'T&/@N6W_A\;"Y]_95DK>,KN5_Y!_"YTY!D>
MX3>,>T]GS%-.>BIK#-=I \^=-XBFET"Q1\W16U]L^S=N1=BK_.PY;$T)9D%H
MAD7U$)\.AQRVC7-0]0<MQ@.\NO"IYA$-D P8)_!-SW;PEH  ''VU@,Q!K7?9
M=[A8G('"Q3?!]#=AS3;\&_H;QG/LX93<___VOK3);2-9\/O^"D0_*4;:0%,$
MSZ8M*Z+5:MN:L8XGR<^[GS:*0+&)$0C0./J87[^96863 ,END01(U'OVF$T"
M=>2=65F9G&$9!&19% &???L6'M>^<I@ &!OV^@?\1_2S ]Y ]T.[-$-\WIA,
MAAWMO:L%X+AH)@L0 @]>!!_1;8(9[=F#5KT<;/88YL3.'5@WP4_)3A;L04_6
M'']Y9SO.ZK<FBIB2A\N_%A)I]7M^O^1FN/J]C99"R?-+A[FKWS+8N&DO89NK
MOTVY8X,#6#)U$()15_;*TN>67;:JI>_]NW2Y2P\-&Q"997#"RV51R32>>^,!
M#I+OI<ASJ9?A+5E,\'? @4W\18 _>Y0\:'J+)?/)J,)?;!<LQYL''8Q*[/=T
M,R?:98ZSCA D2\@)B HZ2([P1^8IV[WU'%C)=]>[$_HF<L5GWPZ^ ^V!2N$^
M#D1T2W*=EH@\XL7L!$0%!!K!T"CT8XT5>JB?$ $^P TTA67/9IPX#-ZBWE7P
M!M"'3TXY;M]>+ &7Q,5!9,XS*^UH5V(=*=!PA<DZDI4)QK5X8/KV5 Q%YHYQ
MV4GP\@7?_%6\F2)G)B1'HL4 WH%VQP',\%_<V,(+4**@#[-.LV%#4MN!J4D-
M(\(SG(_KO+XW8?\W',RHQ<(6)L&+K]=7+SN:2!Z-<>#A1TFK1 W);IW TX@_
MM3F[38&L,>L60 !0!4BC$(.1R;B(PLCG,68ZVE\H6URDHAO0X\!<G!>>T4%<
MWX+:1[!@E./6#H$ P0"A8 D0!2X."[[ 4Q)!EZ;ID:QU'H3,DD8*3@-<#:^
M%Q3A#(XM1HBILYJ,.V1T.CCB74(K1$H!N#KV N#YH)$H"8E]IDXL5X'ZHB6:
M._3(&D:!!\$V=@!<0'/3@/\=X6 840J))4W;-Z,%O !+#CIM5KA@C7RZQ20'
M?M=VVP,8",4,,C>(5L=*_2<'E@"*AQA]QH(0/UOVC8V'^#!!A"P,?.8C8XFV
MP-B=.?3"AV4L8-USBR_PDVS;C.0,^D R;F:0XIN@\L]!GH.#NO(JV=ND5UP4
M0[3H.S H@*_F'NT%F!-69;LF>!0!\@CQ&LZ"@IS< -BN39Z*'<QYLCQB(8#\
M=QZ*'?NQ?,>G<4X>DC]#RX]"VP%(PD1Q1X6%*&6KTZ,1ONX*%UOX0J'O.=J+
MJX]7+V$266%*U_KO8'IQJYNV'M#=W@7>NX!%3/'M6 QD 19#/ $)2D=3QHD!
MOI_@3]@6# TC^6!+<7,NM"_X0#9H8H:.$2D"H8? QU[P<_2NHD6\%C1YW  5
M?/ =+"N E,.F!'X7I0HLB]2A#Z+&!N&.:T2RX_1R#KT"Z6 ._A.^Q?7@V1")
M0F;*EW\'F06:"BB<D9WKN=3D.QV&4 EN'9F94Q8(G7BY0$19;*$#\:/2<;"+
MI"[T.4#@%F@C2"$C7<J$,ID)PI 0S[0;QYL"U%T> E5]1[@ Y2SL:%%<!.S&
M)2A_0SU+.PB$HXLTAX!-^.D?*2.M,D]V1SK,!T:%I$Z@4X]9^%; "4/YEP*1
MH16DFGG.G26IN.UW(6 3$TL*(73;L<>Z"PXM8!?-,T$BP 33"#@* 4831Z!7
M;KFP!=]C/!0F)=X(<<LAT626M\BG $(BSY\6)KJY6ZBA,2@@N)^[(/LX(0M8
M&JTQZN!^;@&%N@%17<)BY\Q&CQM !>)1>P'<='7Y[B5X';/PC@F6E[\E"V&F
M[\$.&"!$V!@^V3"P'K#CSP7_MUL_"N$!+@<PZ@K1$,:0-8/8SW30<J'XHK;2
M7D;7<H6=2=Y]SLJ[3"T#8<X))X0$2\#Y=\0@R"%\%,DGP14N6)#+#0>Z#453
M=C"[^3U8>+%0$_+QCJQ$V,IWGG!,0*H%F1]!09.@'T=O818;%X/$!BD-@@0E
MG!D/3*PE6<RT,"]U:3%54$C&5=")V?#QN[D-7H%<%ULN8;/(+!DIC0X"AO.%
M]X$N/W&]4-4<G1VIVL@3,24L@&VLK5B+7*B<Z(*74 1+R>,*3X%D$LS_X,E
M6!Q:R._-9$LV!768> :)X&5R/#_%'%"6*50$BGK2.YJW%.% \/K17/?9#=%'
M5HJ5RV#2BTA!) 0]QP97V4S!D->*]491"XVF:@T(BN64-(.J?66-$'XK@,D)
M/E1)@CV$NCD//2P;FEIU63Z.P\,L B*DF+341T4;"4D<)@MT*1RD6>[B;"1B
MQ!)2T\]A1.O$2#;P,=B.P((@/T%*1M,IV<!R&^<X,AJZ) [)-@<FB[_%OVT7
M !+&WU2\B 8.>/K<-T4<A-TRVR&!B!;@$MU084QL@!^R-/ ZFC=DNI;X"3I:
MZM8-BEI@:E0<2]L!_]N/7+&!F3PC #D;.P_PF)B>S6!8BQ;&'#1GT?A!V-*;
ML%03U$KDNXS.,TD"!<*" D,402Q11($9 =^%'1+,T!K*N"0F&-#"_MXL<-]R
M$5JZP\@!18"6'N5Q2.E+UI&@@(RY"A802C.,00!^8/O9Z<'*X8033N>S2"74
M2 .0$L2>W"9DX.(S2NOO"$.4*,A)13QH%N@Z+ZOQ!"(RJ\AN']U$0A<0L<.E
MU2AQ2 _.[9MYB6]G(SU(C0;$QBT@  FO$%=!,$@)):\,,!B#AIX=^)%4)';L
MMI4JX=S@=KIZZ<D$ N'$&A0=DT!YP##*ZK+0;/1FYXX]RVU)PHO<'L#$F-P=
MAP'=SFGDRNVL>)3)^F(7H=76J=!=A7XA2F^AX,L!I41G54CO5'D)ZU18?>2I
M22L=I26)5WI4_H"^;SE_">_;C$ V9M64B&I,'<_\CAR*,[D4?UUXQ9"&\.]%
M8%6J67C*XHX6+1TT**WXA&A%\.* L=@5"Y:K%[:_@_&,6"(!0*:TZZF'/S'2
MU+A2V&+>JJ7X"X$H=BIP,/,!AK%$B&<&KG^$PF/FPS;$7F%M0 BP7Z&8^&QF
MFS:8ZS@B&,6X%'HZ8R%DM %L[<9GBX4\@Q->2X(H"E_D@CPS^SZ/AU;+B?]&
M/7^.N-?RUEG!_,B8#SJE4 K[PLXHLW_;-]+J( CS%1,$/4^@95<: Z@14$>@
M9R<#>$W"Q:X3Z Z8/R=RL8S12N[5423'_6ANW)K4N/HRXTJ3X6I-'JM=] @3
M)1OJ>H*%\F_0A_;LX:0 \TDXS0E8<B:*#"(&&D;T.2CH<([Z;SE_P!'Q8!/U
M)5 _QL+PK-0GX6R!Q6[&1R8KOWZ(G-#6_LE#[=<H(,?RL^<\X-\HPN.8O(.\
MKP4/+NI8L&LRH4'AC0N3*/7+& H/?IZ)%))C XZ"(PZ884TV>7:P =O**IGJ
M$ZXXKR$-%8KSA*S%P6@B<:@MSK1!SC$3IK30J70 5"&(O1M\%#<(/Y(-\X!^
MB 7KI^/U+ YLJ0N#B%P>U%\ESC6"0L97I7L<.[@_INI.D<H%^^>J]"KNE]R?
M@4H%]_^=VFU$8.?2:^'GW$4M9,6>0O:HE#A$%SL4'!N'H,5WA0/ A*HW'3>+
M.'F>AWE^9NGRV,EQ:A@'[>XP?"<.]]"<S-J,XBP!4W(P'N[YQ* (GW)_2GAO
M<@\Y?RAXG$.$?DQ\K,RSH"[?'+Q9&G@2L&F.15M+#LF_^$,FE?P#9T'B&GP#
M$6RU/K%5R,&D@J"*T2"#9Y+?40:@3O5M"G;,Q#DW'FB2V6.;\<-TY'\39SH2
ME__IDK:FW&&8\CKR/2G-_LF6#$P)"7:42R+28(E0@U<6GW_,,6W^$+A3$E^6
M-3XH5]\.1,Y_P!P>9'*%\D'.0!Y"E!T[= IAK;6CPZ/G,D)BY2)*G=R6UH[1
M?W=.*3GI K*[7_MJ(EKSB3SYA2 59!*V<>?QL2K'DPN1+"$3F'@R(25(3CFH
M%&'Q8A YE&?C:=H(9Q8FN,RRR1=)W!@(Y88)*+I NQES%C./N CK85@.8U7W
M-D4_4K6#,3E4,IG4*I$MD>0NR1%DGJ6-A&G'=U9_6LMWFC'HC _,_R(5500&
M?CG#^[NP?EGK)_D[6#(S_KO25[==//Z7)8%^Y'*V\*+%%5?I7:?E@G[@"FZQ
MAE#H+3,7[E8O_%X\)E:PX99YY2R]\8_.LGL97K&7WM"<_9S6+%K=4O-W42XH
MB&U-5!V8_\3,%=%!0EY@<RJR6Y#M,5Z?9N"D23)2=B3R9@5FXA:W(NV&$$5&
M(AXM89?O01%:TY!T C(4):>-B=QI D:<!U0>T@2#GNXYX4.%9#OLX?6'"'Q@
M>L  (-0?<T7'S:8 )3 5H2F!^02C,RLBP4J4\8HU\O'26<X9'<>#@/QDAAYF
M-(*@'"I!>23TJP2E(C0E*'_,LJP\+ELC.;_0:=6'W$'2;_#T4M?^^.-*>_'E
M\O/[=R^EW3E6Y-UHPE!R5!&:DJ-;SR*O#WH1%E>P%Y0$($.>42 S84I#G*).
MARR0<<>GYYBAB)<*LXDMTO3$H.<&:CY^JEL[RTX'/D7025;:.?!$5DOV6&ZG
M5]K7F15T.]3.7^'OE*,QKM(J,D'32JV-.?H[_-'_NRBYVR].^1?PR#R0%>/^
M&8%)U^_JHBZ"3&/BXL:OI?7Z>F_8Q\K!?T<E^3UEM^:7D6_.Q1V*W"7\#'I1
MR(EK%LD)+Z5- E5P'>\G)2?0>"8^Z@R?I[?] X:Y4K!7SQ)V9*\K,J62=VRW
M;*%W(& M3$9PY05S "P>*5>06P=+#(GC8YH6!#H3]<5$M8BL%,_,$B_"0M+J
M/\<DR&UA+W*V1-TJ<>VR<KL9C ;VO<#9(Y#:'^O#KE$K4GLCA,[CD%J]7KFO
M':-XXWPILL<=(X?K+;#R"'0C(#B8%]X"C(*TFMB#!CND7(CD(L_5I_]Y_^[<
MF&@8^^+X."!-;HR+"@-N1/4AMZV!$2,^A_>.]A?=L13UI# %^I$C2P#"IF]\
M[RY.+'(\]^8<J[7I&LSI./ \R+NE%Z09AJL;E!>UI+H18'H0&2MQ53DKH5-\
MD@I:Q97*1(W#CG89BK_Q0JZNV2'E+MEX9RIR0G$%FDJ(B<J HLS7#5$:?I'D
MT)0B"7<>5TV0-7Z2^J0MSV04]REE*2"9-J9CQ "LB,^^%Z>NBB\^T+)4,M]9
M K&5A+!4[.&O["[-C]#3B_+ EG1'@(G;[GRQ=+P'+O(!N1O(KZ?<Y0!_7 ;>
M(HQ%>^X9$.WQ)46ZCJZ31)]C;0U@7\^,DPVI@D<8@ @Q>?'*L;C'SH+ PQ5E
M2_Z5YR//Z-)FG+>73V_[*Y%')*U TGBNRYWSN":OF"N;X9:M=2*OQI,A&U('
M!'3CM9 Y"#11VW?!;#>MQW7+8]$E^+JC?1(7]?6,:#0+R"I,SZ:!YT0@DBS/
M<5B]I4)J)^R_L #"#(.,-\3R2RD# ED54T#003J@^BIYT.J$I+O"&&+Q.$9N
MS+1H)L,[-4M,\W=#)@K%R &+%)4;8 ,>=6WNW6%!F<R;<BE8ZW/F@(*,4!7E
M[ALG5:X6]CV.2GE10DD1$Y!E(/(X\Q#":D2Y[6*2/U6P%,IS024<1>W+3&JD
M*,H)<V4(%)[.QB=T*IM#J;DBV53<5]#+^%@7ZK"4I7-E\=(R%@RS'/'>DBC1
M=8\EA^XHU11,R.3^-G ]I[H8<HU"E@2K;\4/R)(E9$7A'LD472V-E$V)SDNI
M)!>U]+W$:\TNCL=%27W,C&X0(Q__K=NQNG6K;MTV5V\)0_93<F7BFLI7\D 9
MJV<9J' )E=A>%;75<FG\J&!T+*#,F6_*>Z3"B5S$1M@-&*:^O+S K 564@U]
M40P\GJ"C?:ZP_>**LW1?#J^2VN#B,3=,RR@D6C<I>X&7*FX\WVZ42"]M>K19
MH(HOXEZYFFR6JV5CHO&_Y\8ROC@D"W:CKTZ*/',Y*,$I7D($XQ@+2PLCESQZ
MJCD4GWHD!:*T7J>KR3KQL04]@R=@\+]%4PR*$15C75E*@-]SP^F:]+BKB2?Q
M!R0MW&$S#K _\!JV_1]1LPM-P:2"9X[RP%0$^_ZKC56W*5+S$&!-=(PY465N
M47%=5$?%CQ_!%5J(Q*%>5]@IQ06DUVHD%,D6A1E0D5E4O2DNCP6F[0)MP/^(
M*BWR>2TN\98LF9:)N'"].UG6"I"'JM#*1-MHZ6F9KKC(OX67/6>10X5JQ.TB
M3B$.#XB'NHS(*T2)E4J<Q[%F)+E5<<!%UJU?J:A+]7R2 G7)I=I%H:9S>C=4
MSQPN%*]HZ;D;5^(O? <_9^Y1%2L;KY0OWO)^_/N,IRB+M@O+WB/O&FMT)@T6
M,I$GK(<>,FI[@)T" -3I7;JT5!]5H(NI0Y<%Y$5!KDR4<97K'B.02BVPXU8M
MH'8_K.J/#O:9*OLA89OR>,G&0(B9]!I8&Q5)59JLHI2>\%(I"=]S;5,7M;<%
MYMG#.:#VW'2P/"#U'P@IL MBPV<6WHOV[K*=(V*=%D=;XE(1R45V+.V:!&!P
M;[8K.C12/>],06X)D-0?S(F9HI MR)E<Q$5 6-S)B?<?#U]PE3,Q5&H/D?Z8
M#R.7V ;D[XK"A7CI)S]= FY1!%HX<>FI0Z8@J[A0*)WFN\3=;Z!Z/R0O?:G0
MG-1#2JOZ=0-7I4HO=K!MBR>*4BC"F)ZEU5#0\WA?-*U+DBG6*=(G=(V[<^PL
M$3^?7!\M/%88-J%E5 ))>  TH$Z&##@]HL/&+/D1;1MYHF$EK^N:K+R"/!'Y
M]([0<[2(CG:5%.K,3I)A)1^K*C,G8C)4$QM&%-^,S1-1T\&G:B=4=PW5C.@W
M</GU2NL/N^<#,#, B^]=T#<W]A2Y1:CXP<_:;YYG88LB&I0ZI.BR;CISSO^$
MY7R5RT%49]FZTIK:EK>32MH"22*HDA362(\(,V))3R&50@DE@"AKB:A-+1!A
MRXC07];^D)6[5[)MVL[DOU6Z3X+-JW__4?59K3&S0CT1#3/.<Y*!F:87N:(J
M7LCN91GO&^;H#=>,FQW6C4R4)6S26+)'!@T9I-DVGG_#7+G&MA,Z!F2()MZ[
M6*98QU0D%8\YDT"Q4Z!DV#A;62*.:HNPJOF01%*PCD/<+"=1R22QL9:7&)@*
M=K-@#H:6PY(> 1D'2#B2V\]!RNL6D[\L#CQ#'!DMJ8;';=*(32A$YT'8GKE@
M/$U77&0Z:.DY2V8JV02,48, 7MA:)O%#O"CJE7EIN@F=LI"=2F&&0#0S U4/
M\\T\Q_:TN,M$G$J05%E+UMRT0X6ZF/HSYB$&<?5OP=S:-W:OHJVX@#QT))V'
M"!V,T>1*_LRXA7H)%3-V>-10*SJY RWQ7G) N?3Y.6I>,6KI8;<G2@W+@HGX
M,)(MK862GG!TV=.#F"\Y42>Y@X2?.PZ-N0$'<MA=D\C_^,_4+M29FCI3:ZXD
MH_IMJBOZR@+R+=&E01$MT(+#JCC9]K'YAN=)(ZOX1(SLHR Y1!"V"]I1EB@D
M)BM0RL&FX/K?)6V?78[Q&&$URA?2=KS).Z*BJVC$)T;OU Z_P@)2F1>OH$\'
M8/>QN'NR$#0JA>"6HJY^X CJVE2<3 K3F>V2A"N7QYFY)D\7HF55SU8T:HG:
MW5#?K!PAO>%0U^+_>;EZR6_JA:&W*+OFMP.$$)!B"(Z>[^I:U+8S5D\(  +D
MN[^<&8,$TWLZ9YJ4&DPQ!PKP$Y]I 3A15H'+XDM5O>?Y.X"[6ECY47H9*++L
M2XKM&]T%^2 N!USG+@<DZFW/B'X<$-?00WT$.#H*^KMH'OE=D>97E*9$W?YI
M[:M]KP2=$G1*T&U':<72%*EM_;O(I3IKNLVZ2D8Y*_9@!)(GAA?R6H8X7O.B
M 'NUOSP$52@^WS^?8VSYF+A<T=G1TEE7T=G6=-8["CHSFD=GSQ21*2+;-Y$]
M5T2F-*:RS!2=G0B=*<M,*4UEF2DB.WXB.RK+K**8;D5XLCO0M5[_0H4G\TA/
M.E56XSQ%PJY89[NBI#N<L"SY\=GZV0>%5#[*Z=CK@HQ>7^\.+FH%RH'QTM )
M:\!]M]OI*LRW7@1T1_IP/%2$4/N$2@0T!!&M$P$C?3#N*SJH?<(:4#_L*-'?
M>@'0ZT]T8SQ0A%#[A,H&: @B6B<">H8^NE!&0/T3*A'0$$2T30088WTP,10=
MU#[AX5$_[DR:A??'';2H//#2@Y9"ZXQ3/W#9[H"OF2RX]>)'(WW0.Z"9MN6I
M:0ME>3OH;3@XI&FHJ*WMU*8;Q@%-$45O+:>W;N> R0^*VMI-;49/[W</&&57
M]-9N>NOU.N.F@511VZE2F]$;ZSUEO"F".YCQUN_TF@9216VG2FV&8>@@XIH&
M545PITIPX)L>\#!.45N[J<T8Z=W) =7ITU>JZ.TDZ&U0:^+ITX&LK@#NX&3Z
MMTP_]Q,_EFXFGX)Y,=)'/97[7?^$AT?]8*32_1HP80T\W],'PY%"?>T3UL#S
MDT,&RQ3BFX-XW1@U++FS"8AH >8;E]3;!#2T .\8J9X,E6E?_X2UF/:JFDO]
M$];!]%U]J&S[!DQ8BVVO-'W]$]; ]'I_HC!?_X0U8+[3L*O:ZL+>#HY%9.-7
MZNB^Y&[ @Y^:T;7E1"8<G/P.3W]"A</CGU#A\/@G5#@\_@D5#H]_0H7#XY]0
MX?#X)U0X//X)%0Z/?T*%P^.?4.'P^"=L" Y5NOZ/QJ63?XT+"E)_8/YW3D%J
MYL+^F<,#E<)?RR%0S]"[ U6UN_X)ZZC5>LC+H0KQS4'\2)_T59I/_1/6TJM#
M)7O4/V$M*?Q=E=59_X0U6'B#IN7Y- $/+4#\H*L/>\JTKW_".BP\I>8;,.'A
M$=\?ZH:A3/OZ)ZS%M%<&7OT3UG C7Q\HT[X!$];"\@VS[U0*_ZZ/2K[P@#/?
MG--)B<5ON>,M%]Q5)8_JNB.I=T>J\DW]$QX>]1-5\:@!$QX>[Q?Z:*#LJ_HG
MK 'SZH"T 1/6$#+7!X:J=%7_A#5@7A4\:L*$-2"^K_<&2MK7/V$==OT!.S(H
MO#<&[\98'_55B;/Z)ZS#L%>N?/T3UG%4,NJJT]'Z)ZSA8-QHVNFHNE6RZZ.2
MW[C+?>;020FS%K9K!R'60KKEZK"DKD1SXT)IVOHGK 'U?14[;<"$-2"^IP][
M"O7U3UC'V;B*I#1@PAJ,:WTT5&'S^B>L(6RN6L(T8<):$LV'%PWSJ)N B1:@
MWABH,](&3%B#L,=VCPKU]4]8AU>G3DP:,&$=R8\39=HW8,(:++Q^IV%'94=V
MN21S/J(MF679[@UL+7."D3LUD0 (O:4\7I%?Q-W%Z3NB -NU.)Z(R%./JSES
M;V!UMJO-F.UKM\R)N.;--!/6 W/"L_@QL"UJ#.&YAST,J=KZ@;DLLXSE??84
MZ7ZECWLX!U!NU\C]\(RZBVV\&.OCT0%K0NQBS2\5P;:88$>'+&&BR%61ZP]M
MX_STH*X(5A%L8Y:K"+;M!*LL6$6P1T6P__OTH*X(]I0)5DE81;#'1;#]0V:B
M*')5Y*I<+D6PBF"/&.J*8$^98)4%JPCVJ CVV&,$ZD+KSBZT]D>4VO'-"YFC
M>4M*W'!O-'Z_Y&YP\KW2BC1H+.\;R_BK5+3MXJD]PP$ORFVWKC9FX+6#WOJ]
M0Z;M*VIK.;5=Z$;W@,65%+VUG-X.VOU"45N[J0T+Q!XP.5Z16[O)[:#IKXK8
MVDUL$T,?3@YXV4_16[OIK7^AI)NBMD-1VWBB]P]9DD[16[OI3?FEBMH.1VU&
M3^\9=19JV"F8%;TUGM[J;4#Y=" ?62F!!IY5P[3O7=-;<&WF>XOXD-IS3_UP
MNID<*VHM=QO6#;8)F&@#ZE6MY29,6$<E/KT_5*BO?\):>%ZU+JI_PAH0KX^'
M!XR7*LPW!_,]56NY 1/64'>UJ_='2MK7/V$=C>H4WNN?L(YV9;HQ;ECYS29@
MH@6H-P;*FV_ A(='_ NCJU\8]>+^<!<0%=ICM/<'-;=-RB)=7>+;P<'(IW#.
M?<T6QR,O'"\(7NJ:R\,3/QIIR9EGOTYN50?LK2*V;JVVH"*V5A';>'1 R:92
MU=I-;-U#&KV*V-I-;"]&_:/(BCQA][LEA';1.PZ+35':L5/:0<\'GJY %:$=
M.Z$=U =5A-9:0C/T"U4/2Y';X1Q0=3%/$=O!K#5],CF*@(=2HT=/:MW)<<36
MGG[NK"[DK;N0-^4SS^?Q^7/([D^^8FPS698NY?4&*INK_@EKN:"CLO7KG[ &
MQ ]UPSB@:Z%0WQS4#Q3/-V#".B[E&3UU*:_^"0^/^7&M!5 :BH86X+W7U8V+
M ];35ZAO#.HO%,LW8,(:[N3U#AO#5:AO#.K!L%>ROOX)Z[B3U],ONO5Z\R=\
M(M-8M/<O#GDZK.[D[?]LY+/OW=J![;GPM-^FLY%VG'KV]7[O*/(A&REA%;D]
MM@'0<9RP*V(["6+3AX<L"Z'(K>7D=LCXEB*V=A/;A5%G@3-UP;U5Q-;OU5I.
M3U%;NZA-'XX.F ZB-&F[R<TXI&Q3Q-9N8AOI@ZX*MRER.YA+>L#C5T5L[2:V
M%SW]8G 4;<U.^&2X):0V&!Q' SUU56_'Q]$?>2@/H4_]^'DCT?6!Z"POFCJ\
M2'7/FLW6U0LW>OKDD('-+1>F;)9U2#L&3;*&Y+J-BFU6+_3Y"=-:2V7=J%M?
M-H22=2V4=4:MV9E*UK55UO5K307?+7L?-?&U1- =-!5'R3DEYV(%.])'/673
M-8+^6B+JQITF56A7HJXMHJXWTH>3^K*KE:AKGZ@S>DK6U4YK;91U+R;Z9'0<
M'D6+CK9/5<R]Z(^/Y$CB95;098ZWX>/4LQ[H!_C,X%7Q.3DRSA[JYM" R]C)
MWHR\[E^*!<S]X@KZRQ!6<1_O^B?-C'R?N^$5GL4GL+ 7[(;CF;3+TW/P;A?0
M,.=(.)0"\+.6.<!/+9+R _X4C-JKNH#SOS]SWX2]PMXT<\Y<^(_KA=J",]=V
M;V:1D\"M=L0=?@%?0\_\?CYE ;< KXLE=P,6XCUX?H^?J4ZP$UGPJ^UJX9S#
M EG(%P#.0/-FFK?D/CT?:!8+F<:FWBW7\ X]/"LV%\Y]SC7F G?;]]H"5C /
M-.[BD/^,7*[U@4!ZW9Z!CX@WX*^N=L<"#?Z9>8[CW04_-0='J\P%C*6Q*/2>
MP%V389&YLCM!JN7^T3%< 6 D&240?CGKGL&V'&?)+ NX+_D[6#(S^=MA0?#+
MV<QVO^&K9_D-G/L"6KT.PBXGU\576= 6%[?U+B6$;*!3ES3&_<\R#>EU*O4;
MD>&T#@.EVG7W \-^ 7_N+V>C!%=E9/STB7\@-ZTB@ZLP\<_IC#1A+DE+YFAE
MMB1W)#E*@.;U],TW$G4?A(B[SHFXUZ^F;];E<OT ;':2"ZF(8E]$\16TWM&0
M1,.R-[=">NSJ7*Q)V'P"9G-X?&&!'<+\0%A!7A2 L1*\W _V-C)4K]T,A<9B
M$WE'8?] V.\J[+<8^XKWVXS]1O)^PTHPEFQ-NMN V\Q5DQSR) 6$WE(2@/PB
MA@9\)Z-%FK<4$1^,Z?@\"'W;##FN$G[<\7V5[;>RZS#]]C-O./ QNC\6@]]^
M(0-].-IAGXEC@+W".M:V[.\P0^$88*^P_F:B7PQW>%9[#+!76'\STKNC'=8Z
M^ '8-S]0M".3YWJQ=+P'SH5YHRTCWYRS@&M+A[GM,';P5"ISU+7&3IXZ@/YM
M4R;VR32/7W)_O,.[&W6 4]'9<=#9+N\(*3IK$&":16?C75ZZ5736(, TB\Y&
MW4-%''8 SN;'Z4KR^O=THOG-"YDCC-HUZ5][MW /PI/[R^;> S?^P&('^F27
M_>0WA\CKO)^B:&FOB^WKH_Y^0PV*EMI"2T97'XZ48%+$M(O%CO31>(>%T_=,
M2WN.DY83EOIV?]\VWX?84>#[R@M"O.+A\UON1OOW!!KALS?TV&=TJ*!A0R"O
M</YF.%''NVW#N:'W#Q9.:PCL%=8!Z\8NJP&?]*'^X>*CG\3-5O<F#H7*.Z@'
M2_I5 ZN!U<!J8#7PM@.WQC7_P/SOG'03E55@#@]:Z)[7?EJ>3\CM-2,Q4\U\
M8,2/ASLLUW8RX&\!X@U]?+'?@XCC1$ K4-]O2$BV^2[[CFR>+SS@S#?G9/)8
M_)8[WA++4"G#IV[]M\MNB"<#_A8@?J=]?4X&_"U ?'.TGYKY\&<5O6:@OC7!
MGM^XRWWFD-W#K(7MVD&()Q.W+4G):,4U"NR2=Z@P@KJPTV9*,_31A;J"J"CM
M %?#=$-==E64=HA+U7IWS]<+:KR&>-II-NH:XNG=T%#7$!4MJ6N(BI::1DOJ
M&J(B)G4-\?41M:U2G776 LRR;^-F.9]_>_NOLQ6&08Z1Y"&[YE2:]T0:N0$_
M_OFA?,2-M:>+3D')3@3/&!-)DC"Q7$)*!#_8JJQ7V:IL":^>3WW.OI^S68A3
M,.>./01;8[X J-_??=D,*"*%V$W+OC^?G?O>7>K ,6WN\]DO9_\%/M%9SN7*
M"H>GT13X6]2,R9MI5S  =O%Z_8HE,B+%0O(Q\ZEV<C_\ E[;6';\"CQ2<&$#
M\$<!<*M-?L0RUS0S$S7+[3?-:6)6"RB_Q#>)VPT)"09M^J#Y?.GYHC]:P&\P
MG8F.^;#/GL\=AE751<=";(1'/?4TT4XOVT9O(_EI=]SGJIG>2:C\G373R\)L
MI=7=SM9?L#ZJ>O8=N+6>W'M_\ @#?7M,[<HE>.J,2;<08U#$=K_8#_BQK4.V
MQ7>U1Q7.;7=C)Y%*[MKU>G^T;=\>T+H]P)I"<'7/>+%GHJYCWT"6\:1(@<T"
MN$+Q/E%\H./!TU""\<EL]OSU,2U)XR7U:E>,VW38.JQ>W*;9V@$4X-.ZL"E:
M.S9:V]C:3=&:HK5=T-H5A52.BMJ*-D'JU?_.&=+)V7&9"1791+N@Q'79]#\_
MI9-S':Y[;X61:^;CTK!8X9%XJ2M9<>>TEY\$K=?)^<\>P?1E GA/DF"GP&V*
M Z=H>;^T_)P.HRA],CE84<2MB/LDB%L):D7+IT++2E KXCXX<6^X5*Q$K*+"
M4Q*Q;:3E U5 .+4 T)>]]+-HWLG8TPY6]Y6^U*Q=MV%&A=E3G5%A]E1G5)@]
MU1D59D]UQA9@]J@STNKR-/*>MW%!B_G3M?%2Q]>0A3NOV=\\4BJ[:+CADF^1
MFQYYQ_<I*YH,]?XN:]@^90T-8/)&S%@#^L?CS@Z[;SUE!<^;AH7VR8"+D7[1
MVV'K/24#CDH&7!A*!B@9H ][.ZP.HT3 48F 26>'M2I_5 *HHYU=.5S7D>\M
MU6%/;6S5&^BC8<VZM9G(: ?ZNYT=EC57R#\JY!LC?;S+KH@*_<>%_F%GAPV"
M%/*/"OEC?=(;*>PW8<8:L#\8=YH64%=G6+MRJ?[)ELP]>8^JYJSD@S/M'O?;
MU[N#+<S _2;F'G+#S=0#BCL:22R];8X>%&\HWF@A;X#FV.945G&'XHX6<D=O
MFR,KQ1N*-]K(&UL$GQ1K*-9H(6MT.^UVQE5RQ1,B@7&G1K\EMV=W2*+]2A(5
M[9P:F RWS[T:/8P'5EFN^4:K1X]8I9CW#;W3XHUN=;[,B7%&RQ*>E?;8%8>,
M].&X*F)^8CRBM(?2'DI[*.VAM,>N.&2D#\95!THGQB)*>2CE\1C6&%;F(9P8
M8U1<M'K]N+[8NV>;DVJ)N3?P'+X#YZ?(C\.>FNV:/F<!M[1GQJ@SU&!XQ_9<
M7?-\#3GHN:X]KE&K2;V%8;S0H[<"MN#:$I;B6=BA MOB=+3L"JJ'U_(CPU*=
MR((-QV]Z,^W916<2KUE;^MZMC>]-'S0/9F#FWY$=V*$M^AS_'DV#CO:VK$FM
MGH$'+297UB0+I(L"C":=B[V 2+SW)5V5N/>77<HXW3HM!7.482W8;S>S&TIN
MS;S6[4S@(?B!,W.NF?#=/A!\?8^X AE+4-\>O/WBGH@""UM:!46_,\J]UC,Z
MH^UWJ3UA@^]1T+@,:2L]1!#@NF.!MO20[FZY\Z#9,)H9QK $TGQF9&C6BGR$
MTJ[ G^F1#*M@L+ @<D*D?M@^2$U72EKS 2:ZY4C[@)VE#Z+6!\$B1@SA@1OX
MY.+*X%7\\JT/^PGFVF>4GX00Q()HZ@S[C%>31^P[ZDS3:4YWYL,OX-TZ_.8)
M3]?N4"#YM_!#KZ_WAGTM<NV_@>9!L%F1&6H6D)D#I.\'A ' DNUR^ LY)&$'
MQ%@?1/ES#1#L5U/PMWG*0OAM]5QR3437":58/J#=72MJ4R& BQ!\$/^J;YXO
MY6]CT.D_7\\J!1Z^ ^K=CI$1#-ST7&]AF[ FDX-FL-WP08-M!CC?S/<6]/K5
MI_]Y_^[<F&@@4"V.C\\!(C%[TR-NM)@"S&&/FU &*_2T9>2;<T(9@%"^ 7#[
M:VZ#:@)BX/=+#F,\<F0)/M@T6#MWL<AU//?F'&360L<.[([#J0D[R"FA+\LW
MZ(EW;QQO"E).@.D!M@T,#Y]#&V0>;AR,JILY/6D!WPN180=2SW:TRU#\'0*O
M@% .-?ALV;.9;:)L@G4N 4FVW.@L"B,?IB3JPB^D:5B!)-SYK>?<(J: ,K_S
M$%=F$24&K98\L>T R(U)Q@$*(9 A7$ET _I,:AX7/-(*@%$RNN:. \H8CN$X
MWEWP4W/@?AK.QP$!)NQB 81?SKIGL"W'D0YS\G< ,B_Y.^G<]PU?+?8#()C1
M^FV@)3>43O>N/6U?(*77P>ERWC=])?-97J<>\1%>FFM* "QI_F ,BMBF':OV
M#S\$]-?3-]](!G\0,O@Z9]^TL3'$R05ZCZU'_%XIJ;IQ?".PH/!^<+P?]=7V
MIM!4@WMHGX:21C](:6-%SR=$SUU%SXJ>3X6>KRBPU4:*+MI/:8CF=\YPBV?'
M95+5=T?HA45'6(&(HGM1P%PK>-F0RT*J":?JV7URVE#1LNK9K8A;$;<2U(J6
MVTC+2E KXCXX<:]U@Y2(551X6B*VC;2LBL0\*0#TI27E851KX';/J#![JC,J
MS)[JC JSISJCPNRISM@"S!XH>R]SGR.YH$%N1^RR"2=VLMO+VX\-G;QW_\U-
MNA;WP7-P6>L\B=R6]EZD8 .Q''HQ565;-J]CSV4KSMX,+W1C5%7@L=5(.Z7%
M[)V,!N-.5:F>0X.JJMS4D:&L/1)HK%],JCK0M1III[28_9/10$F@)M-/@R50
M;ZS$SXDO9N\TU*VLR%:G]#G0R=AQ^*M7'Z^T#\R<VZ[R58^7T0:&/IST3@-8
M:C&UD5&_7]F0[<A I193G^%XH8]'556\CPQ8:C$U^A^5I>"/#%1J,;41D='3
M+_K*+CKQQ>S?O!YTJKIQU@XJ=?J:\6;[[[3/OHV%*I4O>ZS,9ESHQEBI_A-?
MS/[):*!\V5-?S &(2._U&ZOZU6*.A8SZ'768=N*+V7]P5I_T%16=^&(.$59K
MK#Y3![,95_;KG/-0^\!#YBA7]DB9;:"/C?%IP$HMIC[%KQS94U_, 231:#0Y
M#5BIQ=1'1<J-/?7%[)^&E#([\<7L/YS6W,P0=1J;<6$_A7/N:UM4U*E$&_UK
M-(#0,]/'()9[3U<<]R3+?1=7UKK?W;KKJHA6!I *7C]E& VZAJ*8)U",XNMC
MP%)[^;J[W55)13&*KX\02^WE:T/O&EL=>2F:49Q]A%AJ,6=O%P=0%*/X^@BQ
MU%Z^?C$RMJH;T!*2>:EXNMD(4CR]#4]O60RD)33S\LF'!JI4OR9F%DUS_)84
M[-]AJXY^)75:7C1U^)K"5(<YXCOL7HU>7^]6'DOO_13QL)MM0+W@?3-*S= [
M+=[H=BN=[!/CC*H"A:?!%$I[[(U#1OIP7&7:GAB/*.VAM(?2'DI[*.VQ*PX9
MZ8-Q5=[!B;&(4AY*>3R&-8:5 <,38XR*XL3P<>I9#_0#?&;PL/B\N8WJOKH,
M+<4"YGY)Z%9C4>C%6_U),R/?YVYXA8!* & OV V,ZGHN3_ V&0+BYEQ$="EP
M6M80MAS@I1'2Y/<S[55# ';X!;Q]T):^9T5FJ#FVRW7-B_PX5JK9KNES%G#M
MC@6:Y=OPK39]T)B&A<Z>IS_;KI:K#QT/H,.C>)$\_VBF^%;VP6YGF']NI452
MLB[F6O""T>GF7\A<A4X'OIO;YIPVL&1^:#/'>="\V2R )VDK(YK7XNDPN71T
M';_AL#'-Q)]GGJ_!S_"OS[FV '#. XV[%K<$)O\9N5SK UGUNCT#B'$!DW)+
M"SUZ*V +KBT!%9Z%P\(SW4Z-N"\0GV7?:J;#@N"7L\^_O?W72H_I;O=Y(O"2
M@Y4R&2@/%?(#?OSS0_F(&]LZ%W97MA,A^7M=*0]A8KF$5 (]6MZ(U<4"IX<"
MIU2X+.'5\RE0S_=S-@MQ"N;<L8=@:[%3 -3O[[YL!A210GQXDWU_/COWO;OT
M6(=I0*FS7\[^*_3,9-@5-?8TFCI[\PV5#;"3=@4# %2#UZ]8HJ!2+"0?,Y]J
M)_?#+^"U_>;*"T*$5R)=?O.]( !YZ,WLD.2:^.(#K0G@9;]ICH!H L0Z!)/X
MRZ*BLK1G1J_3UV!J!Q0':#-?Z_4ZX^?Z[B5W5K7<P.S ^O H<^EY'_XL6R!^
MAP;K<S'I[M6)]FW.<TK1+("JJ,J?C3L7,;S2%WT>1 YIZ)GO+<@H8.;?D1W8
MI)!AO-^C:2!F>S;H#%='*)D:OL*!''[#S =M&@5@< "M%U:4'V/.F66"" TS
M2X*O8=>!Y[K<(9[QN0/PML2$\=L!3OVLUQFEU% 8VV=WH+P ;V 5T#BQ)83C
MB->-=&NZ,#OR0W" R7(!DH]^G#'3=NSP(;<@,5"W,X@':I#*KX6CUXH\P=_B
MFZ5X)&5NHL5GPUYG*/:1$MW67-1%YGDV'*5D\9BWC8Y<K(!78C;*I0TFG1Z:
MI.+%\D&UE=4,1L*0K5A%[@5#!ZB M>(#)C0+>$J*@H5]G^&TME/8)Q /C$3%
M]?V2NP$^+ZSZ]RX(45"[+A>D!U1X"T(-J !%L?A5^\;N>:!4[QO@R.^<P(B@
M^LH<'@CVS/\0X \:EY#.ZN)!Q\BKXD&G#ZK8BGQ\=U>*3[Q1IOV"++,D&F8K
MW5&AJX1.Z*6[LET@'% B2$(A-^<N&/HWH,4<QS/%M_F!\0W3B<B=90L//-+_
ML%BE C&&GL.F@=;K=+7 FX5WL&L-['H>PHN%N6GUBP03("QO?+8HTX%9W0,T
MKF%4+!0X*=?K.-BM;9$YE5I3")/%.LROQ6M>C+5=0GWA 6<^6(\(QG<@M1V/
MS C!7Y\H!I-YPDJ?*&6T7HIAP6CCSF2?C+:JA+8VR(R,YJWB21.6Z3,S] @,
M0*0F4A>W;)-&E8MS6.0"?&!0).,"\SP$(5]TQ(K?I6#( K+(<;IF<C]D:!A6
MP3Y=IK#L[CCPI\F6=@BD\A]RAL&892GO9E\F/NYH7P$>7$"7%BEB4PXS.5GQ
M0#6WMDG&Y4?OEB^FH+6$NX&O%!<P9[=<FW( HB0+"Q< ,V"4PRIP>U$JI':_
ML*UC,Z;*VF\YS_[&73 K!(5>6@O;M8,0S8Q;GG+M3>89EGNFE&_[G7&>;]&
M/"C?9OT9014YPQA-<-![\!=L*B9-(CV]Y-54-\'?U1(A6/&DBJ_;;A%Z]-ZC
MM5<OA2^.N1D[2H<](C(S9^Z-,)5FS/:U6^9$A$H4WP!$E'GP,0!4^&3C"#9!
M$VV[Y\4F06QZIDW$<V>'<T)-&=937RP7TMBCL?D7!_EK::Y7N0/-L=D40P(V
MP,GG)D:;K4?06 ..!YI :2N^FZ"DOSC!],:%QRW-HX?LC(,GI$KB@JP) 19]
M;)8>"(E!4C&2)8^J*2_RX8G<O/*G:HQ+3S4SZE-BA:F@)X(,D'U@<4R[00-'
M+(H#ON1YB/E 0M'&XQ<N;#;TA$ELWL(7:, $FY86ASVVB<)4K ]]E978SOI5
MR=- >+.??[-JI_7S5+W<5!WS2.T8/IOAV2LHQI#=)]'L'IV5/HX04VNG#SY)
MCGV,$1X-Q\-M%<W&!TO6EO?TI663.]3%1Z>@_F<V4 Q9N3@4$A&*8@J=@2U@
MFTB'0>B9WXFL:+I[[INVD 3B%V^)LAW9(8J9@<9?)H!%2NYG/.>G@BQKI(LG
M<^)GW?0K0=(MI5]73P$(0T]M-XE/S.T;9/^ES\]Q/CFU8#_YVRIN&L1MCSG@
MSF3TK!QYEYYO__HM/;8M.]+.3++-N6W^)Y,[CI8_0Z\\-J\\URV>H\?'YIH&
M-">G30]MRP]PLR?JGR]_NSY_^^7Z\E_GE[]^N_Z2.?B69^U;GJ?_5Y?^K^S
M7/ZTQ5'Y*AW].,2_?;KZPW:_)W-8=@"..H#2=C%9YGSJ@#A8<S"_]OS]3D("
MO!!,2XFQ)W*^\E_>@F!C[NJS/WR"__/:(_S-Y%!VGI];R3\*B_C'EAEU%<*A
M&0KT]?3-%8EA.Q""\:M]+];U04C5ZRK)#K(R=2!>OYJ^4:<,;Y*ZG^V&A 0#
M!D-]OO1\RN.$QV^2TV7**XC#*-+W3HPG^WZ-0R,=Z2SQB= EPQ$<Q[L+?FH.
M[$'#Q'+8/S>C *^IK]%ZN930K35*/JTTK[ R&Z=DU>1#@S)%!7F(=?]R!@H2
M%9;,=T[^#I;,3/X6()W9+DG\L_P&8NL&K,:B#22^RD+KR<I'0L@&"G5E#8;8
MEDI3F/=:$'G[E3[REL#N!X;] O[<7\Z,P6:C[TDS;\I>)YX2E2@*F8M5U1R*
M)F8Z(TV8,V9</#=U?LYL2>Y(LI14$-,WH%VUK&)-9)M0H-7U''X ,MO"X< T
ML>^!=TM?>]P%D$4\-M*  G\SP'^@LO:-A,D&*3YJMQ!',[1]\EIA/\%^5V&_
MK=@7!\5-Q']17Z5.TN^<H2MUUCP55H)TZ9SU>L]WBMD<'E]8GN,P/Q"G,%X4
M,-<*7NX'H1L9JM=NAGK61%Y2J#\$ZI]CO%E4-$P"IXH6VDD+2@RT%O5*#"A:
M4&*@]:A_WD34'ZA,]2Z1NS>O:8NFED<4S%0#JX'5P&I@-; :6 W<P($;?_[Z
M"-/KD0/G3#%-VF*Y5*[X7^."IOW3M3&3[FO(0JSVL-.V((^F@IW,40;<#45R
MC6)AL4>6 MUN$<;%2.]/QH?>^_XAWJ Y#H+(\45EG>Z]87&'%;,56^;9<CS2
M+R83Q99'SY:33E5;(L661\>6$WTP.3@Z&\,P)\.4P\Z@3IX\I2CLOEV!Z\CW
MEKMN#:@X8##2C>[!F: Q,#X9/!J33E7K$87%H\%B?ZP/C9'"X['CT1AUE,MV
M]%B\T(<7RL@_>C3V>@U@1A7UW][4_R=;,O<D+/W=Y&8=D%NV7O!('U7VNCLD
MZ$Y7A)XN[?3V' E5E'.JE#/6>R-%.PT P!'23G_/ 1)%.:=*.2^&DZKNI7MR
M(+9>VDM%-8VEFHM.[PBHYI3.H'[T)H"XK.5OO@]P/.RUD4CZ0"2B>W&12AIP
MT+[]8GO]B6Z,]WN0M>5BVJ/BJ]'15&E=O6*CVSUTWMSVBSO!1)Y3E4,]0Q]=
M'-334')(R2$EAY0<RI/16!],C*:"4HFAIM//^-!GID\30AGO%3XF]8GA,Q90
M%I]KKP.MBF5O :3#+T!T\%QM3C_.]A/W?$WTZ7Q,%?>MFL!GI]]N<-F6E@?)
M>]2L<Y#I?)6TU9L^5#>$?UM6OE[/MH#'M>3NWF4!-"G 9]@9[ $^XLDOZ9I$
M G!V(1?9OO'8F;&'W8M$)\/D-4HFR#:>ZQ;>NJ!VCM@GGIESS<1>1#O']?5]
MW$\8,; ]J(U"[TFCTWVN%W>X"ICB:P/"T!.VN*'1GMS=>Q1;H@51&CX3T*&^
MJ1X2X"UW'C0;1L/V3>)'H-%G_928LCWW?ASRF38*U.Y5M$]%)ECIJK; 'J[8
M5B7;N)U&#.&!&_CDR@94^.5;'W83S+7/*(0)%X@ T?6!FBIY)3A]1X49&]1G
MZ? +>+<M=G7MCE,?4^Q'-M:'74.+7/MO(':0;E9DAG''7NZ+QG* (]OE\-=*
MO]/>J--_K@%Z']&^K'HNN2:BZ9*>Y97R-N5^7(3@@?A7??-\*6./.\;S[;E$
MNP/"W8Z#$0;<]%QO89NP(-EC.7S0L'\.SI9T8[OZ]#_OWYT;$PVDJL7Q\3DV
M,Y9\38^X$35$QO:R&_ %*_2T9>2;<\)7Y,=O -#^FMN@G.Y$UU<8XY$C2]C!
MIL%:NHL%K>.Y-^<@K!8Z=F=Q'$X-6D! "8U9OD%/O'OC>%,0;P),#Z*KL^@I
M&M'&P2B[$9U/+=F*+YS;@=2T'>TR%'^'-K9EM$/LAV?9LYEMHEC"[MP^-L\6
M&YU%8>3#E$1:^(6056$%DG#GMYYSBY@2W=]Q9:(%;[M;0F<Z]L0D@UW!5*\>
MY7ZH7CTM[?*@>O6H7CT'&OCHF\4H\-<*_L;?&E'].E2O'H5]U:M'85_UZBG1
M5ZI7C^K5<P0,I:KSMQ;UJDF'H@4E!EJ/>B4&%"TH,=!ZU*M>/0V_H:=Z]:B!
MU<!J8#6P&E@-K ;>\\"-/W]M0M6^"<WZWOTW-RGO]8/G8*C_1.LG-.(>X-D;
MPQCHPYYJU[//.0Y3@/W@-^U.\AIO8]BRIX_&!^^_U!B6.1FV''95NYX38DO]
M8JATY=$SI=$Y>&\$U:[G2=[ U<<K[0,SY[9[*IY D_A@?*'W#EV2LD$P/AD\
M]GL=I96.'HNCD3X:*&X\>CSVNYT#%TQJ$(1/!HN&H8^&R@$_?CR.._7+5!7_
MW]KB[[_3/OLVED-0]O[.-=-0'W3KYP:%QQ^5:8/#!Q4; ^&3P6*_JQL7JF7N
MT>/1Z!\^G-@8")\,%H=ZKZ?<MJ-'(YC[]?>O5@'^K<W]KW/.0^T##YFCS/T=
MT^5$G_259CIZ- X.W?^I00 ^&20:7;UO**?MZ/$X4"=MQX_$%_V+@XO4H^^P
MV"P$'IX-G][LL-7Q_$_AG/O:%O<MCX813K?5J*%WC?W&0%1SXU.EG6[GH$TS
M%>6<#.48^L5HOV$*13NG2CO[OEVA*.=4*>?%Q7"_F1!/)YVC=Q5/F&H&P\9*
MG*<[J,T^@2J,^.A:/Z(<FW]*'FA;NL_V^A/=&!_4L5!=L$^I_:SJ@MW4S1^7
M'.H9^NABOXDE2@XI.:3DD))#:\EHK \F!\Y2W#%;-I^83E@,';Q&T-.$4,9[
MA8])!T+XC"T2Q>?:.SVJ=IA; .GP"WB;[]"J4SO@M,NY[,^,O9?3CLM,PUN"
MSW/MFW.5)^(!=/%H/_]HYLI:YD%LZJT9G5'^V97R=ND;=W/;G(NNT,P/;>8X
M#YHWFP4\%&OL=\;/DP;T.%8F=[8X+X:I\@_GSN'WW*>^.3UK+?LVYM+/O[W]
MU]F*=$;QO"JU\LU7X:NX'6INO%^_?5E;YCPS21P\RPXPGYW[WET:5LO_A'UB
MM<^_??SSP^92ZBOY&3$HBZ&SLS=B+DWK]>)I7\&\B=Q-/F<_SI/XX>?+WZ[/
MWWZYOOS7^>6OWZZ__*0QYXX]!$71E -O+/EZCY)\L0PKP/SW=^4P%W3TXQ#_
M]NGJ#]O]GLQAV<'280!*VT5Q<CYU//-["0DG@VJOF3;W^>R7L_\*/3,9A]!R
M)R$!,@7Y.\8>/E'\,LFP*3Q;A>GMF>;L#34:QD855S "T%'P^A5[LRTY9#[5
MSMV'7\!K^\V5%X0(O$24_N9[00 :P)O9(8E?\<4'6A/ RW[3''G8!(AU"";Q
MET75;&G/C%''T&!J!]0DZ&]?,P:@G?5=JZFLQKV!N4&>PJ/,%0W=X<^RY>%W
M8$4_W[G.U+[-><Y2, L *IHLSXQ>9Q*#*7W3YT'DD"DR\[T%63_,_#NR YNL
M#ACP]V@:=, 0H=\<?L/,!VT:!2#= D!D<=H,7OJ=7C*?!3_!;IB;6_.<,\L$
M81YFE@%?PU8#SW6Y0^SA<P> :XF9XK<#G/.9T1FGB"^,[;,[T,N ))"&-$YL
MYN$X\>O=[.M6<0@.<%@N0.+1CS-FVHX=/N06) ;J=H;Q0 TR9FIAWK723;"R
M^&8I'DGIA>COF6%T.R.QD916-W-.5[P") 8C]%*\;O6RT9&K%(!*[&"YIL$$
M&=AVY10;EX*$/ABA0;W5Y#J PH:9 ?PQF^!+"W@IY:NVD]4GD F,Y,/U_9*[
M 3XO7)07?P#F7H)\ JD)VM7E@NR  F]!B $%H.05OVK?V#T/E(9] ]SXG1,T
M$51?F<,#P9KY'P+\0>,2X%G1/NP,\AH7O@"-:T4^OKL;/2>>$<JN2OL\0E.D
MN@@?M=T9'OV3C@NY.7?!F;@!->F O2Z^S0^"'K#I1.2!LX4'_O9_6*P@@=1"
MSV'30$/!$WBS\ YVI8&?P$-X$:?O9::_X_!CF<N^2( /LO'&9PNQAE@:Q:JF
MGZ@:! NS+-+4>I7JQL%N;<0 K**?E8N+:F1OC\FV"Z8O/.#,![,08?@.A+7C
MD<D@^.D3!9,R3UCI$Q6,-<HQ5M\ /;(WQEK5/%LSU""5 !DS,_^Z"<OTF1EZ
M! 2@3Q->AB7;)HTJ%^>PR 7HP*!(P05F>@A"ONB(%;]+@9 %8Y$#P2;E?LC0
M!*R"?+I,8<,12YIL:8= */\A=Q>L9Y;R<O9EXNN.]A7@P05T:9$B$N<PDY.1
M#C1S:YMD1G[T;OEB"JI*>!'X2G$!<W;+M2D'($JBL' !,$/D QH+C%Z4;"E3
M"RLZMELJ!$+BQU3)H:+ ,<@F!W,-1"Z, ^9TO#E:?-LEP&_<!=M$4/REM;!=
M.PC15KGEJ0RXR3S#<L^42H%)UC%!*=#OC XI!;)^D&#VBP*-;7(88=EDG562
M38&*^QEQ0MHH],SOYU,"!^X#0%2FEE>]P VT70!^J8(=YU:R1B(67^PI)U!&
M<.;,O2&2!J_9]K5;YD1$2:@1@'10C,+' ,P2G] J. 5#&ML]CT+8,VU"Q9T=
MSHF^RXR?U)5[-LX0\1I.$O KN(=_<1#1EN9ZU2MR;#;%^( -^_:YB?%M:VN.
M;< 92!/HACPZL9!5MT[0R%^<H'OCPJN6%#*.A[X >GX%/MPRZH;'=,G9ES#7
MTP!"5HJ*Z>R,JRGDST4^8+'5K.#5?,JO7@SRF$!A*KB)%@-D!U@1RT6D: )-
M+(L#YC0R*ESS8=,18@Z2-OX3@E@5XA>]:?KV%KY LR@@\4C60N:5+,#B_6;
ME]NQ^&.;*$_%MF'RR4KD:(M%LY(W;]!^+(%9_7Q:+X=6AU528X?/9GAF#>HU
M9/=)9-P8X]GV8Z@[E=WH!.48T9AT!IG!JN+CV0-M?+!D97:PWOS!-^'9*1AP
M,QL(AHP>' MI"&4[Q>C H+!-)$.R6XBJ:+Y[[INV$"KB%V^)R@* A8"2)(GC
M+Q.X"FMH]$@15H08B+!$VZU:@]ZZR4>=P5/$F9Y #S$UM=TD/N)X=V0)\G.<
M3,X;@TC\N(J8!C&:2@JH2@KHJZ2 =4D!;3[CSZWD'X5%_&,3#VIK>;T9JO#U
M],T?-G@<%IX)HCB[$@$D[4L<ZWK]:OI&G3:\N6+!7/L5!'WKCU[(P?4<  5Y
MA<1S0;1 Z^,_&$4 M6PBL&8(K(SSN(5I;! )HB+^J3D03H5^NH)[D7.:"'MA
M68=7*+B3_%\PR&YX01%,LGJ TF++=%GFGFIZ!Z;\'FN:3=R8_%=!$@((OYR!
M_D)]LL30KWN3_!TLF9G\+33/S'9)@A=MDTF23FX#Q;ADA]SO;OT%&V=8M(/@
MB]CH2=.R&U$":^/.) #'W>>;,O=W/:51/2. ")#O_G(VVFS/[1"]C[[XGFQE
M]#Q_3[N2KW:]]#-4SU]!8'X0 O,Z)S"%8JZ^V2TY+KO-'4+UD3 L)8<#593+
M<,$.4?.$RG+;DFKH+?/N5PQE,?,+"[0O\P,1$/"B )1F\'(=*=3!W;TCX>Y:
MF1MMGN/G8T5JQT%JW>,GM8;5>'F<!5:?ROC(0^&4)7E4TP?-2](1&88MZ=1O
MQZ5BMO<=#C7C4]JL]W[L.NM3EM3KZN/>#N^M/F4-AT:-(H:*)0W[^L#88>WG
MG1!#P\I!'YTDC@*18R<.<ELFA;><L09>>V%TAWIWEZ7RG[**'59#5,A_!/)'
M0[TW:1#NE;F[&R$[LUWFFDK(-H7/#/UBN,/RUTK$'A'JA[HQV6$YV<.*6&7'
M2A!>4[(3)EOP>Y,RI2GCB7(T2?32W1G\@!>0;YDC\C%.7.3F8UREY[2%1^)%
M8*0M_XM,GZ$066,9>NLBTD-CB\KC^XT_;EC\X;&E2/TD2?V%,:B*W$D"EQD,
M!]%V>\23\E1VXJED$[Q;K#IW1[G]2LH591B;&.7=OFCDBXNA/II4U8<_)@FS
M!9Y.VDM3)+\MR??&>J]7%9<[89(_EJ*P*D&VV3G;K^TW7V7I"O#8DXS_MJ>R
M_VX'H>>CY>G@15(N2EBD5^E$V!@O9D9^G"[AN8$TT,1%"2I] ,",?%A!. ?Z
MNYFG"?"ROD#R:G(+N]+0$[4*C$R9.T;?K;_L>S',W/BG.=]Q4Q3LZ!OQ5=WB
M;<(D59\NSQ8O$*X_I03@>'YEN1ZZ4=P;%^HA+($"YW&I@:6/4 D![OD*=>*V
M;0Q=47](W&?NIS#96"(!KS7##";GEKSNF+TPF]0-$I<7.$@G<>>=8#_J]/)W
M!Q,TB0H85/9%(CI#%+3&3.&%!EW^J_G&C$! 6OWL,G,&TVX!=)5>E,D*BMPY
ME2#R'&D]Y59-Q7US9)3X5OF,RI!F:C<QZ]\1/8B\'A<D G5]3MQ@AWR1JREF
M\:7/L:!%S#3%(F.X"6.[$BEQ#2]:5#>[J$W%458N3&]9C0-GRI;7(*Y/:X!D
M4"-D$OZ>K9>1"B\"#(A0+,0$SS\S+M)A.]HC<#[L%Z\Q/PKQW4<@OC<J5*S<
M _:-8:%"@;X=_D>=\:I MOB,^W05'"_NTW/#PG.;:$7>*=\-CCO#W-RMEOY;
MD7CFGG^_]W39ME71XQ7C)JUZA#1=D('=;.6JW)/,I$J_5!R'@\4F[QL_,S+%
MKC*5Y$)[(:LK$,O02TLLI[@K(:5+5L@LL90O>EN+S[0J%8VUB:4':>$V/?]N
M)6>+VA"3G)PMUL(JJ[^"#-=JKBJQJ=XG9KFRJ7+"9UUV);D[P.7##)EM795.
MC[6H9.R"FQ.'\&E^U)L9[R@M[R2</_P%&95J#F6]&RTN5O)DAVDCFY.7DYOO
M:1Y3JQDR2VEB,=7D-AIV^E6FW,:B- 62ZTWRM<&%_MJ,+!T$;[^XC!^F-4&_
M_<R2<,C<<.*US..9U3:(@AY3(R>MB%/>UGFU8$NV@$UNQ(U7OPJ[*]N)"(KW
M!FM*UCPZ%%M=M"8?=UW"J^=3T-_?S]DLQ"F26CC;16375+:I!%2N <VZTC;5
M56M^O.;,VI(SJI/,-A;,KTEFKK)@2BV8LM1E:<%D+(:GVR^#?'W$G-P.Y@RC
MVEB<=,X=8=!@;3-O"AN/8^&%(J:H,$)P?7P&!K\I[9Y<Z7HJ:IV;!_P#6'&F
M[ERV0CS-"B^PAT4<'Y=Q>0 \Q;_3U63M'EEFL<SXZ6?"/*(L=,;L65_S3M'E
M9KH<%@/H3S=UC$$Q]K,-]:R$S?9&V)O,[%Y)-4]%;EMJB^F;3[/9^5OF$+.+
MSH^7OH_ANH70M=-6ZPE1O5_6P>1+45@_/L5TO1 X[ 9L,V)7YA)=GD\E- ."
M)LM ,QO+1:*,8GKT(Q-/-ZU8[,**EA@5<I"GEAX\!J_+\S.,8?DV&45)T=KX
MU[83\Q5Z82: [5)$$1'0GSW'-N/(\I\"XM<@_K#I5^OI^R])RLP"<0CTAZ3E
M14$<A:4F,S'\L.T'&@F^:&<!YCAEJ9+XEC8F0/YK"%\D3C*.XUO$#B3AL^."
MPC+M)7:3D6T/0*[#[YP6(F.V?[HV_D6#DEJY7'#,)M!>_-GYVM%^N[S\_%(4
MR0T /O8,?D(_NF3UU)[##DS'D]KUHQ=RK1?'M+?9#;*N>!<%PJ7K1E3%<>GY
M(=[)^-7S%P#7\W\E#O\#9[[4P:NY FTF.V#5+QP=\1RC^IX+GTVE>7 !0$VY
M[E/44H- EN.A+,AP-/YHNF;+)9"I;*GX&2PL[;VNO<=.-8;@0CO0_CN"[[D/
M#+I*[O_=($H^_O#24(675'BIN5()!#?@P[9^.;/[9QH8G3@[?I0H@B< ?"@]
MQ%+['90=:)TR*MN.-AA\X<1_OQ,:F3+[V-2+0DVT%M2^V,'WMJL  /:OLJ_$
ME>PKH> ""[C$GFNBOU3<#B[NOY$F"Z9NFA]WU.9)2]"*W)-PSD)A*'+76V!K
M AF(R7?W0$<+DTSC7,6DJ;$\9X_\N(EPW(E*IK4D.1J99E[:6_19@CGX*2!E
M86W7D>^)Y__)ELSEX+'\7][N9)=/:6XP $]@/DAS1D4:#/72M&ZY'W"P4^S%
MDE&GC;LY+W,EWE&!3S1^1/H%#T3/+NHMX95B_%)VUA.IS-XNUI3#?>5B\$FD
M"E@"IJTA]0A* U4MVF>D2XH7@GQ1S*9.EG5G.XXVY92.(_-"8!.PPB":_AOO
MG&-N<J8W5Z&Y3>$^>JM)\Z],+"C.2+AC?MK4DB(V">3 6/.IJCNYTW-NW8CH
M$J"4M& )[3UH/LC\CO9KV=> 51<P20(M"$3102Z"&W&02:+*=BMH Y8W2_P"
M6(5(,R^T[P,;[&&)9\PBO&)TG\=TG1D_7GB!/%!43KEC@Y $ L,VF_$[=U[D
M6!GO'X$HPA%I2W;!-.APD)Q?6:FN32-,X<*1UK];NGU:7:93V KPL<-3VN$R
MFU&U\B@VT.(KG=ZSH?D0S"2A)K9H)Z?CBI>BWXWS\*B%]G,+Q;95/[J:;G$U
MWQ+2"JIQ3_<PF,05X"9%B)GU2V/]*3+35I-TQ$(W@$M\)0\GABMC;-,7B07K
M<AV#I&E4<P3>\3N\(^7P*H>WN?H]X_ .4H=W4.GP#CH$5]]SA-7U&4\B+?1O
MV^ZU 22O,?LZ25%.?7\%LFJ_!QYGXOA03UO8TD&X:2\36*)]<S6W^4R[ON=F
M1,KVTVQFFY@4B#VGZ+<T_BM_TT%!@SX4:.%6OODAN)YD3XA&ZGB^DO5BTWFM
M%(]F%H_+!(_:"X:7$<!X$_[TEP@DD-%GY\;P!7^I@;#E0DE_3>\)7L>&Q*6H
M@65,^@/M1?;;ER_EO4U:M6O%'^7-!-,#^U18Q!3#]BERW='>4KY\M/1<X>_S
MA"A%S_4G@%$8GK!Y>4*$X^J/6MS?28!=+%/?%K+H8:9=$>6/6']<0Z\./$/1
MI![&8*(//0MSQPH^ERG28.],LR=DL+(HB(_AQ*)D@ 0\T)F-*L1'?W%AAQD$
MYK!FIQV.=;%F=%'TM)65)7MEX^#XAPG8!SIT1)\TI'8Y/S@T,*G/D(OH9'QF
MIV>$7Z^O@%-[76/R,TP8.?*H%_<H&[?"N(M(-.0F3]A;+"(7')DP;7.99;/T
MD/[);,7H7,7WECZZ\]3N$MMYT4;PB@QL(2#OR^<WX"V*$(+$1(KU!AF:]1SG
MI_[%>Q'L<&)5H2$#92 OSJ4 C@W5&8^SCL4722-'%]G5R7<[/'OS+O7D9K8?
MA+$005$C_$=Q  @.C?M CHW#8R%OXQ]([8DD!ZT;>@Z;!EJOT]5%;UL)\FD4
MV*0,@H> [N0!85.82+ASN(BIA^E;]_(%,PI";P$V^HR)]+4T6N60A7V.$E&.
MUM&N%TM00W9 RFC*.1UVXBH7#-\2B8A8!C&1<\E@B5B4M\7Q!,$";]+QTHQZ
MBR\=CS(;J>FUXVA+RE(3/FP,GU0)"A&1RO*-T*)U8^PB#CR@ *.URO?E'/\(
M5A8NR#B-:O@Q&<=ZRI,GL 4MY<NP$T'+S47K1++2EM.09J:@#+RP0(E=H:9G
M+RND_,ML1&&MZA7:@Y9= B@=]0EJLT1O/6B._1VE)4C/E1?TQ^VS1)+N@2,/
MQ?S)O^=&(L_2QGVXD@^).A,6WKVDYOB.,7=XDNI+Y23$=:0PD)'$F%NV)Z22
M$AH=[2L,#6H-!Y/QE,QE+5W,3$S.!,W1M<_T+&7)'F!.)Y$[B>T3!(+B1(6(
MPJ3?YI0PE]EA,C$1I91FJ<VP_2:E_>.+>.\L0GK$MV]\>5249%T0PZ=3\'N9
M<;O]7)*MZ 9NRNL))@EAJ=623I5'8*E%_P@I1"BR\<#M;@ZH>#CW[A!38/@%
MMF4S_R&>)-UR?\Q_)E2*_MYD8V7OS8DMX-YN/,_"LPAQQU8\)?$?%'9*95#2
MG?EX;38@"8]FUCUE\P$R!L]IJ-'S?+A2CU=)QRIT7383?DPW'F328A;B&G)J
MQ:^/(#;(5CO^H.!8!0554+#1KHD,"BY[25 0/^:"@I\OOWS3WK_O:)^^_7[]
M17O_\==/7SY<?GO_Z6-#?91:X&<;&0CB'Q6!55#L?X"O[(CP($?]T?KXX*]T
MNP5C(VAWP'\IZ06-Z,Q!?IS2[1#TEBGTA*/C,'N19+[8:;4,#Z,2J-]-4+TB
M:QYU<.(+IE>2.MJE@TU2;^92Q2;'K)A6<Y.6MI!SF<Q%ZVF*9>!@)69R_4<:
MIW@G.M6ZJ*+EYX"7JFK:M.5I8E!QSBS!@'%2\A_0P\NLAC88A7$]$KIBI&OV
M#+P?](/(:$GS-N#]"&>A,V:PLV'?5B2N(?DQN-C-#89R0C33LBX,9OJ8,LY4
M/)Z.3]"Y+/3OYB#<J9V\:E] 7DZPG*!@)9)",RX[E"&G_0KDZ?FM%Q#Y=&X
MCG 3S)^S0!+?63\_Z6*#V.+*[8;XM@0Z#AC/C((@<V) F2LS,3M%88KAC(1%
MXKA&<H\O^RJ>2IB^/4WO9"0KW>3O_Z, T'_LJ-AX[1C/L4S6.+&+YDFJ6GL=
M[4\7I!<6+D,/^2MS1!K+M;B/F3F5R=RADGJX]3SV218F^95/_0@5Y@19P!CK
MXFO41*ZXI"$.AI!0Q4]3#Q/% )26[7-!T7,F.8I%H%+%&8D\@)&7:S-W:R4W
MY2[GSHHF01Q+]98\KEDBU=;2MV^%U^SR&R\4]W"3.[R@@S%\FE%LR0K@11&0
MC98XR[-A4I=$ZJQ/KO:!/6C&B" Q$5;)"A"TDOV3-W^+VC<[;%*\BNH-H5.>
M0D=L.P,?&.#&9PLB58Q(NW$4ER*<\3&<?"@.(14%6!_%DIU.),R&M(86Q0.J
M9D:8@*>7UB/\)HZPXE"X""U0,!K,$D)F[L*U3,_,&B/82SAW2J5-X_"PQ*GI
MN2(]-5M"+Y:QM3-)[0MX5TQ[6U>_X2Z+#TLS!GH7T+F&ZY!59/QJE4MRE1GB
M(+H=Q.0BD7.5'2]#5$DQ8$FJE9EO6!@ _IEY>- 8_-0<9(L:22) \\M9]PSL
M?,>1%>63OX,E'16)OT4$!&Q]"DN4!U'6ASY60DV%&/E]$MM*2[YK!VM.MOD(
M0&YUB!T#"C7\Z5"\M"O.?DX<-ID\8'%\IF.?Q!"H:"+PV%A@>:\(P ;0BOO+
M62^ABQ\///Y *Z(*H!>G3&>D"7, E_#.;$/N0G)L N=O)&$^1J2I0+)\%1+I
M<RRI=HN!TEYA&UIX/(W,)RLM&]:1^3'01;*S@1 U!R222Q!*8"2 ?8[ZYS.#
MI2V!7(A6CHU C@/9S1(": 20WX\^6C1U;!,L_,O$^O[L,''IX[,P/X)CHXG3
M%QK]?O?@4N,#N[<7T2*^%_<_<9ED25WDLZ%/]W_!U7C+,]3V9Y(5LD)9V@L*
MCGI1 !Y)\%)[8;RLA]CJZ)SW.!LO;;"42?3(4< 6QMC9FTMP.AS-D'6[8^=6
M?!M["[L'?W'5A^2UBB6<U[#!'YT"Y5FFO5->T*VV#:L+SI7+%*;.LV,$O2+?
MUI-OK'2?]8>Z,:[JI+PG!-31(;T6!45AX8)ZPN]DV%4IIV/D[J:QLM)$BE:/
MA5:/2.T<L5]$QR5%O9,[0SE5Q;-"=Y6AB*D#: =*%*==>^?)C>NHP4IM9#3I
MZ3 LZL.+46?8/T)YKMBH*=KS5#DDU<)]?3(:-%D+-\CY:RVW]X&,1#/Y$V?W
MU;#-%J!H",ZRRF^+52OMJ/A%\4NL"K=AF)IU)7Q,4K?@,V:*U99T'43)I 6%
M#'[ISX[M\G-Y_]#H=9]G3FS1.35@^3# F^NDO %%28<B>5;4"8TS9=^EF;+;
M)0B7WD:N/6-X-3NV)#?7C]Q@38)N<Q(<:\[R[V>S_->6XG['9XSN9OV)U8^^
M<M<&O*;9_6W/Y/](%T^ %*DX:UP*21%:3&B#+*&M+8'W 22>]I7->/B0+?&N
M"$P1V#H"&V8);%A)8,..]HFN-[Q/"YDITFHX:1U_48H+591"%:5HK@3(2=)1
M5I*.RJY*CSK:]?W<GMJJU18Z(.+:%-5=\LQ(E@#R1:5+2JE>RI3J3$&SQMVQ
MVG2QJFR1JT(@>TMJARM>>]UJQ]-4AE#BW8[&N]S<2A0>O?Y\"*541A<>B1>W
M$G\YI]7_)(XN?BXY_BXAN%)E]\,%G(7$D+</-B5SQ_L9[AW6&X)]R4+&AD+[
M$]#^CNHL+./BEY(*RM!?<99U@NQ=%SKZ'>,U;OO1@=:+'80JZ08'QBKA?V$-
MBOM7CUZW)(R=6W^Q*3X/P^5/KU[=W=UU FYV;KS;5Y>^.;=O>?"*6S?,?V6Q
MD+TR!H/^:#1YU>UV#6/2-WI#0/=PT!^.7UG&9'(QFEC\OM_KS,-%PEWG,. Y
M[ ';&OVD<2$%R'ZR?0L[\])=>JP^\(53>2;X$D$DJXF\=TW/![N)Y8KH:G^P
M*6P,?NR@;:H$RN$%2J]&@=)3 F6S0/D1YA[TQ^/!Q!AVC>Y%;_ *F/K<V(JK
MLZQ+O+V097QWQ>Z:J+Z*AUT]RL(TAD("*.8_(//W:V3^OF+^T[,FI, 9=0<&
M_/\C!,Y7CC6,R@7+VX?S/]A=4"9&1+.-15SG21P7?_1NQ7'Q!0F6D3(M:I$N
M1F=M8KUBZEJ8FM__O]ZPUQL-JMDRY<HKW,(,F^5(-;ZN1](R\@-L]XUFPE<N
M^A_WN[WXM:_,GS*7!^>?[AW^@-TC%%_6Q)<]Q9>-Y<OA#_+E:G\RQ9?'P9<]
MI2\;S)>CG>M+:GOR2+Z==$<_Q+?-8;,R;CI[8W2-SON/7Q4+%%C@O8ONM/9_
MWG[Y _P>\(NP*]H[>5BMO4!Z6/W:\KAH3<:62ZS9+:O54S<])I*-WX$#!Z2'
MF=W<9!$6V0T#,4W(;F2'2?"E+(OG>C)FUQ.?F;]4ZN* Z@(YY>O5[TIC-$5C
M9%GB&[OW7&_Q %(_Y"Y5O_]JSOF")<RI[*LZ&.;J\@_%,$?",%?,,;%O+W[^
MPW:_8\USQ3ZULL^[ZU\5^QP)^[S#5JZVXI[F<,\?EV\5]QP)]_S!IMQ1C-,,
MQOG\Y5HQSI$PSF?1F?=I9MNCR'V?=%>!?:-;=>.]O31X1>VC/V/3@?+ T@MQ
M32\4-RFRY$-M(;VD_[<;YQ;#E$9%,.D1]_YWMGEUWV(;]92GOUZ=&FG;:7>?
MTY1F2)>HJT2B]5<DVKAWT1 -OO,FE#Z_Q0ZTSD-ZFRIF\WZG1V4GRJI4?*&.
MA#)_\&O<[C5I2/GUW'AUJ;T@ ?/1ZVC]?O_<& _'@^%+74Y$767EV M;MJ"$
MU^-.?4:?LH-ZHO^\G20LBH9K/I]QGV,X'1M4VFZG3M-/\58N6;B)O+6>SHT"
MG?\C$&1\<?ZO#!%WN\9Y']/P-]$P9<T:(FMV6^I5A%L7X?85X<:$6\S,_!'B
M;5 )J).K=C!1U0Y4M8/=W=G?R[W4K^]_^WCY[4^,#;6[@L'G3)Z0J ;W=V3[
M7)0QB).%TB[>U_>BKSIF#.'/QJ0_T.6+PN:&H>:@!:P(= (EA5C9P@<XS91K
M >Q%]"#&C)$IGS-GAM(;!Z(^M_(!K-7#(Q?KTN!X:>6Z]>5I-&/0&1\8=8_N
M55LI7 [IU5?;6X/A\U6MO[ MR^$U>8,9@*^/7Y6MO#XG=NME#[I-@_CJ-=O-
M@?3&;:(<_FN"QXH/%!\\<>F*^O>^H7?@Z?VD748W40 ^YN86+*?+"S77B]DU
M3%X%K^ %\.]#[:UG>;YBM^9N:$L&.XZ5-T_?*#8XC@TI-MCW\5]@HR],D=Z*
MFU!B9X=?W(O/ONV:]I(YJVMZ>9I,^ZB@N8K!G&(,1EG?)VQ]_].;N]IE1_N+
M/9RF #LV;E-61PU+5UQP%!M27+#7I5?4%6B M;VRIM9:VSM+[BGIFU8\73W
M7)G\B3\NOWX[_WSYV_7YVR_7E_\J367Y]=N7;5(O\C^A Z#ETV J<PTJ4S.*
MJ3!QYHNF];OQM&G>Q=H<#/CX^A6A^7^]?C4/%\Z;__7_ 5!+ 0(4 Q0    (
M $2( U-:DFW;<0@  $M    -              "  0    !E>%\R-3(R-C0N
M:'1M4$L! A0#%     @ 1(@#4[/$UC-E"   _#\   T              ( !
MG @  &5X7S(U,C(V-2YH=&U02P$"% ,4    " !$B -3,N75O/@$  !V(P
M#0              @ $L$0  97A?,C4R,C8V+FAT;5!+ 0(4 Q0    ( $2(
M U,&?#8S8Q   )W)   1              "  4\6  !P<FQB+3(P,C$P-C,P
M+GAS9%!+ 0(4 Q0    ( $2( U,.Q 6WC0\  ,_E   5              "
M >$F  !P<FQB+3(P,C$P-C,P7V-A;"YX;6Q02P$"% ,4    " !$B -3141D
M.#P]   IP 4 %0              @ &A-@  <')L8BTR,#(Q,#8S,%]D968N
M>&UL4$L! A0#%     @ 1(@#4[8 .K=X5P  ]1<% !4              ( !
M$'0  '!R;&(M,C R,3 V,S!?;&%B+GAM;%!+ 0(4 Q0    ( $2( U/:N!E2
M$D(   =.!@ 5              "  ;O+  !P<FQB+3(P,C$P-C,P7W!R92YX
M;6Q02P$"% ,4    " !$B -3SDR[4SPZ 0#Z<!8 %               @ $
M#@$ <')L8C(P,C$P-C,P7S$P<2YH=&U02P4&      D "0 ^ @  ;D@"

end
</TEXT>
</DOCUMENT>
</SEC-DOCUMENT>
